参考:博客 Vamei 、 廖雪峰
面向对象概念
面向对象完全可以按照自然界生物分类法来理解。
当然,它不会有自然界那么复杂。
因为我专业的关系,因此个人觉得微生物来举例很容易理解。
所有的微生物都具有:形态微小,结构简单的特点,而且他们的繁殖速度都很快,他们的繁殖速度是可以计算的,如果知道时间的话。
微生物具体还可分为真菌类、病毒类等,他们分别又具有自己的特点。
比如,真菌类一般都具有细胞核,还可产生抗生素,而产生的的抗生素质量是可以计算的。
病毒类一般都没有细胞核,病毒会杀死细胞,杀死的数量也可以计算。
1 class microbe(object): # 父类 2 size = 'little' 3 structure = 'easy' 4 # 变量属性,也就是所有微生物都具有的属性 5 6 def Fanzhi(self, x, time): # 方法属性,微生物的繁殖数量 7 number = 1 8 number = number * (2**(time // x)) 9 return number 10 11 12 class zhenjun(microbe): # 子类 13 xibaohe = True 14 # 子类变量属性 15 16 def kangshengsu(self, k, m): 17 weight = 0 18 weight = weight + m / k 19 return weight 20 # 子类方法属性 21 22 23 class virus(microbe):#子类 24 """docstring for virus""" 25 xibaohe = False#子类变量属性 26 27 def killcell(self, s, i): 28 num = 1 29 num = num * 3**(i // s) 30 return num 31 #子类方法属性 32 summer = zhenjun() 33 hn4 = virus() 34 print(summer.xibaohe) 35 print(summer.size) 36 print('number = ', summer.Fanzhi(2, 9)) 37 print('抗生素质量为', summer.kangshengsu(4, 18), 'g') 38 print('杀死细胞数量为', hn4.killcell(3, 9), '个') 39 print('number = ',hn4.Fanzhi(2,8))
通过代码尝试,可以发现子类可以用父类的属性和方法属性,但是父类不可以用子类的。
定义对象summer(实例)属于真菌类,这样他就有了微生物类的类属性,以及真菌类的子类属性,以及它们的方法属性,简单来说,
就是所有的属性,
它可通过
summer.属性 来调用,
也就是 对象.属性
总结--引用自 博客Vamei
将东西根据属性归类 ( 将object归为class )
方法是一种属性,表示动作
用继承来说明父类-子类关系。子类自动具有父类的所有属性。
self代表了根据类定义而创建的对象。
建立对一个对象: 对象名 = 类名()
引用对象的属性: object.attribute