簡體   English   中英

從派生類對象python調用基類的方法

[英]Call method of base class from derived class object python

我有兩個同名的類和方法。我有派生類的對象。 當我從派生類對象調用方法(foo)時,應調用基類方法。

class A:
    def foo(self):
        print "A Foo"

class B(A):
    def foo(self):
        print "B Foo"

b = B()
b.foo() # "B Foo"

經過一些搜索后,我得到了一些解決方案,如下所示,不確定是否是正確的方法

a = A()
b.__class__.__bases__[0].foo(a) # A Foo

有沒有更好的方法可以做到這一點。

如果您使用的是Python 3,請使用super

class A:
    def talk(self):
        print('Hi from A-land!')

class B(A):
    def talk(self):
        print('Hello from B-land!')

    def pass_message(self):
        super().talk()

b = B()
b.talk()
b.pass_message()

輸出:

Hello from B-land!
Hi from A-land!

如果從object繼承並指定super的參數,則可以在Python 2中執行相同的操作:

class B(A):
    def talk(self):
        print('Hello from B-land!')

    def pass_message(self):
        super(B, self).talk()

b = B()
b.talk()
b.pass_message()

輸出:

Hello from B-land!
Hi from A-land!

您也可以像調用一個自由函數一樣調用該方法:

A.talk(b)
B.talk(b)  # the same as b.talk()

輸出:

Hi from A-land!
Hello from B-land!

當您從派生類對象調用方法(foo)時,它不會調用基類方法,因為您將其覆蓋 您可以為基類或派生類使用另一個方法名稱來解決干擾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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