面向对象-----声明、属性、方法 1.概述定义 1.2三大特征:封装--数据保护、继承--代码复用与功能扩展、多态--不同环境下代码的多样性 类: 数据类型,是一类事物的抽象描述, 意义:自定义数据类型,可以创建多个类,使用时就可以确定对象的类型; 另外,定义一个类,他会随之定义类的属性,当对象创建后存储了多个数据,并能对这些属性/数据精确控制/修改 1.3声明:class classname 2.属性:该类事物的共有特征 分布在一个固定的函数__init__(self)中,通过self.属性名来定义赋值属性,具体的数据会在对象创建时传递实参 __init__(self)方法: 1.该方法拥有固定的名称__init__ 2.该方法的参数遵循方法形参规则 3.创建对象时默认调用此方法,根据实参与形参的对照创建不同的对象 4.self.属性,该属性名不再是一个变量,也不会用v图标显示不是方法括号中的形参 5.形参是指self.属性=后边的变量 3.方法:该类事物的共同行为 类方法的第一个参数必须是self 对象:类是一种数据类型,是一种抽象的概念,他告诉我们它的共有行为特征,把共有特征放置在__init__(self)中,来实现类的实现 对象就是实体,具有具体的数据。一个类有多个对象,因为数据不同。而方法形参的多样决定了即使没有init方法的重载,也能创建各种各样的对象, 拥有不同的数据
class People:
'''
'''
def __init__(self,name,age=1):
'''
'''
self.name=name
self.age=age
def eat(self,food):
'''
:param food:
:return:
'''
print(self.name,"今天吃了",food)
return food
tom=People('tom')
jerry=People("jerry",2)
print(tom.name,tom.age,jerry.name,jerry.age)
jerry.eat('八宝粥')
对象的调用:
两个对象间的调用:
class Pet:
'''
宠物
'''
def __init__(self,nickname,health):
self.nickname=nickname
self.health=health
def recovery(self):
self.health += 5
print(self.nickname, "正在恢复中。。。")
class Hospital:
''''''
def __init__(self, name):
self.name = name
def treat(self, pet):
''''''
if isinstance(pet,Pet):
while pet.health<=60:
print("开始治疗...", pet.nickname)
pet.recovery()
else:
print(pet.nickname, "已经康复了")
else:
print("不接受其他类型")
cat=Pet("mm",30)
h=Hospital('jia')
h.treat(cat)
多对象调用:
class People:
''''''
def __init__(self,name):
self.name=name
def taking(self,v,a):
v.drive(a)
print(self.name, '到达', a.area)
class Vehical:
''''''
def __init__(self,name):
self.name = name
def drive(self, area):
print(self.name, "正在开往", area.area)
class Area:
def __init__(self,area):
self.area=area
People('老张').taking(Vehical('贝齿'), Area('东北'))
总结:面向对象实现复杂业务的原因在于对象之间的互相调用以及对象方法之间的互相调用。
如何实现oop?
首先要从文字语句中提取出类,若没有文字解释,可以将功能列出,逐个清晰描述功能,提取类。
确定类的属性,从文字中确定重要的属性。
明确某各类它拥有的功能,也需要从文字中提取。
分析一个系统功能的实现需要哪些类的方法以及方法间如何调用、流程。需要从自己的常识、分析获得。
编程。