[英]I don't understand the order of methods in python
我不明白為什么代碼使用D類中的print_me方法,而不使用A類中的方法。
我使用打印語句進行了一些測試,可以看到它在初始化類A之前讀取了類D的print_me-method,但是我不明白為什么它對類A卻沒有做同樣的事情。
class A:
name = "Alfa"
def __init__(self, foo):
self.foo = foo
foo = 100
self.print_me()
def print_me(self):
print(self.name, self.foo)
class B(A):
name = "Beta"
def __init__(self, bar = 40):
self.bar = bar
print(self.name, bar)
class C:
name = "Charlie"
class D(A, C):
name = "Delta"
def __init__(self, val):
A.__init__(self, val)
def print_me(self):
print(self.name, "says", self.foo)
d = D(60)
輸出為:Delta說60
我以為會是:Delta 60
因為您傳遞給A
的__init__
的self
仍然是D
的實例,而不是A
函數A.__init__
調用了self.print_me
,它屬於D
如果執行a = A(); a.print_me()
a = A(); a.print_me()
您將獲得期望的結果。
重要說明:python中的__init__
方法不是實際的構造函數,它只是在實際構造對象之后自動調用的方法。 但是,當您自己調用它時,它的作用與任何其他方法一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.