新式類, 舊式類
阿新 • • 發佈:2018-11-13
class A:
@classmethod
def s(cls):
print("1")
class B:
b = A
def s(self):
self.b.s()
B().s()
def fn():
print("hello")
dn = fn
dn()
舊式類 class A:
pass
新式類 class A(object):
pass
現在所說的,提倡的一般就是新式類
繼承多個:
class A(B,C,D):
方法重疊則從左到右找
菱形繼承:類似於廣度優先遍歷
A.__mro__ 判斷先後繼承是哪個
mro演算法判斷出來的
一般不採用菱形繼承
以上說的是新式類中的繼承優先順序
舊式類中繼承優先順序使用深度優先遍歷
2 super是子類中使用父類方法,同時也是新式類中才有的
3 global 和 nonlocal
nonlocal 是python3中的新增內容