目錄
特殊屬性
Python對象中包含了很多雙下劃線開始和結束的屬性, 這些事特殊屬性, 有特殊用法; 這裏我們列出常見的特殊屬性;
特殊方法 |
含義 |
Obj.__dict__ |
對象的屬性字典 |
Obj.__class__ |
對象所屬的類 |
Class.__bases__ |
類的基類元組(多繼承) |
Class.__base__ |
類的基類 |
Class.__mro__ |
類層次結構 |
Class.__subclasses__() |
子類列表 |
# 多重繼承
class A:
def aa(self):
print("aa")
def say(self):
print("say AAA!")
class B:
def bb(self):
print("bb")
def say(self):
print("say BBB!")
class C(B, A): # 繼承同名方法時,B在前面就先用B的方法,誰在前用誰
def __init__(self,n):
self.n = n
def cc(self):
print("cc")
s = C(12);
s.aa()
s.bb()
s.cc()
print(C.mro()) # 打印類的層次結構
s.say() # 解釋器尋找方法是"從左到右"的方式尋找,此時會執行B
dir(s)
print(s.__dict__) #對象的屬性字典
print(s.__class__) #對象所屬的類
print(C.__bases__) #類的基類元組(多繼承)
print(C.__base__) #類的基類
print(A.__subclasses__()) #子類列表
輸出:
D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypro_obj/mypy02.py
aa
bb
cc
[<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
say BBB!
{'n': 12}
<class '__main__.C'>
(<class '__main__.B'>, <class '__main__.A'>)
<class '__main__.B'>
[<class '__main__.C'>]
Process finished with exit code 0