簡體   English   中英

我不明白python中方法的順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM