1.类和对象共同的属性。
如果一个类,有一个属性赋值了CA='hello'。那么这个类就有这个属性了。
假设它的对象a没有这个CA属性,那么a.CA就会是hello
如果对a.CA='no'进行赋值,那么a对象就有属性CA了。那么a.CA就会访问到自己的CA即会显示no,而不会显示hello了。
但是,如果使用ClassName.CA访问的话,永远访问到的是类的CA即'hello'.
注意:python的属性的搜索原则,从最低开始往上搜索,搜索到哪个属性就使用哪个属性。
2.对象方法:
image.png
3.好好理解下继承和重写:
image.png
4.类和对象的搜索:
image.png
image.png
类用bases来链接搜索。
image.png对象的dict不包含继承的属性和方法.
5.通过类递归获取类链接:
image.png
def classtree(cls,indent):
print('.'*indent + cls.__name__)
for supercls in cls.__bases__:
classtree(supercls,indent+3)
def instancetree(inst):
print('Tree of %s' % inst)
classtree(inst.__class__,3)
def selftest():
class A: pass
class B(A): X='B'
class C(A): X='C'
class D(B,C): pass
class E: X='E'
class F(D,E): pass
instancetree(B())
instancetree(F())
print(F().X)
if __name__ == '__main__':
selftest()
网友评论