2017-08-02 15 views
-1

我有下面的代碼片段:如何在Python中使用不同返回參數的兩個不同類中的函數?

class one(xyz): 
    def __init__(self,...): 
    .... 
    def myfunction(self,p,q): 
     .... 
     self.dummy_ = 1 
     self.corr_ = 3 
     return self 
class two(one): 
.... 
class three(one): 

在這裏,我想myfunction()只返回self.corr_而不是self.dummy_class two但希望所有的self.dummy_self.corr_class three歸還。 實現此目的的一種方法是在從基類中刪除函數後,在這兩個類中編寫相同的函數。但是,有沒有一種方法可以在class one之外完成這項任務,而不需要myfunction()

+0

你回來'self',這意味着整個對象,而不僅僅是特定的值。你的對象是否包含'dummy_'屬性?如果它不應該包含它,也許你不應該繼承一個首要的類。 – deceze

+0

除了@deceze的答案,看看抽象類 – Michal

+0

我首先繼承'xyz',它沒有'dummy_'和'corr_',我在函數內定義它,然後返回整個對象。我錯過了什麼嗎? – thechargedneutron

回答

1
class one(xyz): 
    def __init__(self,...): 
    .... 
    def myfunction(self,p,q): 
     .... 
     self.dummy_ = 1 
     self.corr_ = 3 
     return self 

class two(one): 
    def myfunction(self,p,q): 
     .... 
     return self.corr 

class three(one): 
    .... 

它被稱爲方法覆蓋。您可以重寫您繼承的方法,從而爲特定的子類提供該方法的不同實現。

https://docs.python.org/3.6/tutorial/classes.html https://en.wikipedia.org/wiki/Method_overriding#Python

+0

如果'class one'中的自變量中有2個以上的參數,它會工作嗎?我們希望返回除一個以外的所有參數? 如果還有一個變量'self.third',我們希望'class two'中的'myfunction()'返回兩個自變量和'class three'中的myfunction()'返回所有自變量。 – thechargedneutron

相關問題