類的繼承順序

2022-08-17 13:36:16 字數 1281 閱讀 9334

要背的內容

只要繼承object類就是新式類

不繼承object類的都是經典類

在python3中 所有的類都繼承object類,都是新式類經典類:在py3中不存是,在py2中不主動繼承object的類

在py2中

class a:pass #經典類

class b(object):pass#新式類

在py3中

class a: #pass #新式類

class b(object):pass #新式類

在單繼承方面(無論是新式類還是經典類都是一樣的)

class a:

def func(self):pass

class b(a):

def func(self):pass

class c(b):

def func(self):pass

class d(c):

def func(self):pass

d = d()

尋找某乙個方法的順序:d->c->b->a

越往父類走,是深度

多繼承

class a:

def func(self):

print('a')

class b(a):

def func(self):

print('b')

class c(a):

def func(self):

print(c)

class d(b,c):

def func(self):

print('b')

print(d.mro()) #只在新式類中有,經典類沒有

d = d()

d.func()

在走到乙個點,下乙個點既可以深度走,也可以從廣度走的時候,總是先走廣度,再走深度,廣度優先

在經典類總,都是深度優先,總是在一條路走不通之後再換一條路,走過的點不會再走了

演算法內容:

如果是單繼承 那麼總是按照從子類->父類的順序來計算查詢順序

如果是多繼承 需要按照自己本類,父類1的繼承順序,父類2的繼承順序

merge的規則:如果乙個類出現在從左到右所有順序的最左側,並沒有在其他位置出現,那麼先提出了作為繼承順序中的乙個 或 乙個類出現在從左到右順序的最左側,並沒有在其他順序出現那麼先提出了作為繼承順序中的第乙個

如果從左到右第乙個順序中的第乙個類出現在後面且不是第乙個,那麼不能提取,順序向後繼續找其他順序中父類上述條件的類

類的繼承和掃瞄順序

類的掃瞄原則 01先進後遠 02以誰的身份宣告的變數就在誰的掃瞄 向上掃瞄 繼承 子類可以繼承基類的公有成員和受保護的成員不能繼承私有成員,私有成員只能在聲他們的類和結構體中使用.掃瞄情況有 1.以子類身份宣告的變數並用子類物件賦值,先在自己身上掃瞄,如果有並且是用virtual關鍵字修飾的,就向下...

java 繼承類載入順序

package xu.jin class insect static static int print string str static int x1 print static insect class hello extends insect static public static void ...

類連線 繼承中類載入的順序

繼承中,類載入的順序 1 父類的靜態 塊,子類的靜態 塊 2 父類的初始化塊,父類的構造方法 3 子類的初始化塊,子類的構造方法 public class importantdemo system.out.println 開始了 system.out.println main new test1 b...