面向对象的三大特性:封装 继承和多态
https://www.cnblogs.com/chengd/articles/7287528.html
一. 封装
封装就是把内容封装到某个地方,以后再去调用封装在某个地方的内容:
所以,内容其实是被封装到来对象obj1和obj2中,每个对象中都有name和age属性,在内存里类似于下图来保存
在调用被封装的内容时,可以通过对象直接调用,也可以通过self间接调用
通过self来间接调用被封装的内容
综上所述,对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封装的内容。
二. 多继承
如果类继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先和广度优先
当类是经典类时候,多继承情况下,会按照深度优先方法查找
当类是新式类时,多继承情况下,会按照广度优先方式查找
class D:
def bar(self):
print 'D.bar'
class C(D):
def bar(self):
print 'C.bar'
class B(D):
def bar(self):
print 'B.bar'
class A(B, C):
def bar(self):
print 'A.bar'
a = A()
# 执行bar方法时
# 首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去D类中找,如果D类中么有,则继续去C类中找,如果还是未找到,则报错
# 所以,查找顺序:A --> B --> D --> C
# 在上述查找bar方法的过程中,一旦找到,则寻找过程立即中断,便不会再继续找了
a.bar()
经典类多继承
class D(object):
def bar(self):
print 'D.bar'
class C(D):
def bar(self):
print 'C.bar'
class B(D):
def bar(self):
print 'B.bar'
class A(B, C):
def bar(self):
print 'A.bar'
a = A()
# 执行bar方法时
# 首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去C类中找,如果C类中么有,则继续去D类中找,如果还是未找到,则报错
# 所以,查找顺序:A --> B --> C --> D
# 在上述查找bar方法的过程中,一旦找到,则寻找过程立即中断,便不会再继续找了
a.bar()
新式类多继承
注意:在上述查找过程中,一旦找到,则寻找过程立即中断,便不会再继续找了
三. 多态
class F1(object):
pass
class S1(F1):
def show(self):
print('this is show1')
class S2(F1):
def show(self):
print('this is show2')
def function1(objname):
objname.show()
s1=S1()
function1(s1)
s2=S2()
function(s2)
(s1)
s2=S2()
function(s2)
https://www.cnblogs.com/chengd/articles/7287528.html