2015-10-08 19 views
1

有沒有辦法將屬性值從基類的對象複製到派生類的對象?從Python中的基類對象複製值

class Base(): 
    def __init__(self): 
     self.a = 10 
     self.b = None 

class Derived(Base): 
     self.c = 30 

def main(): 
    base = Base() 
    base.b = 20 
    derived = Derived(base) 

我試圖找到一種方法,更Python,因爲基類有一些變量複製基類對象的價值,但我無法找到一個巧妙的方法。

我希望變量「derived」的值爲「a = 10 b = 20 c = 30」。

+1

這就是我真正想要的。請參閱@Martijn Pieters的回答。 http://stackoverflow.com/questions/21699707/python-how-to-copy-all-attibutes-from-base-class-to-derived-one – Han

回答

2

那就是不是怎麼辦繼承。您正在將基類的實例傳遞給派生類的__init__,這與繼承其屬性完全無關。相反,請執行:

class Base(): 

    def __init__(self): 
     self.a = 10 


class Derived(Base): 

    def __init__(self): 
     super(Derived, self).__init__() # calls Base.__init__ 
     self.b = 'abc' 


def main(): 
    base = Base() 
    derived = Derived() 
+0

謝謝你的寶貴意見。如果某些屬性在施工後發生變化,我該怎麼辦?我更新了我原來的問題。 – Han

+0

@HanulLee http://stackoverflow.com/help/someone-answers – jonrsharpe

+0

對不起,我是一個新手在這裏。我的問題含糊不清。我更新了我的問題。我感謝您的幫助。 – Han

0

如何使用默認參數?

class Base(): 
    def __init__(self, a=10): 
     self.a = a 
class Derived(Base): 
    def __init__(self, a=10, b=None): 
     super().__init__(a) # python 3 
     # Base.__init__(self, a) # python 2 
     self.b = b or 'abc' 

def main(): 
    base = Base() 
    derived = Derived() 

    print(base.a) 
    print(derived.a, derived.b) 

main() 

# output: 
# 10 
# 10 abc 

也注意到你如何稱之爲「構造」的基類需要設置self.a的照顧__init__

相關問題