2013-03-20 97 views
55

在Python中如何擴展一個類?例如,如果我有如何在python中擴展一個類?

color.py

class Color: 
    def __init__(self, color): 
     self.color = color 
    def getcolor(self): 
     return self.color 

color_extended.py

import Color 

class Color: 
    def getcolor(self): 
     return self.color + " extended!" 

但是,這並不工作... 我想到,如果我在color_extended.py工作,那麼當我製作一個顏色對象並使用getcolor函數,然後它將返回字符串「extended!」的對象。到底。它也應該從導入中獲得init。

假設蟒蛇3.1

感謝

+1

您是否嘗試閱讀文檔? http://docs.python.org/2.7/tutorial/classes.html#inheritance – wRAR 2013-03-20 14:53:05

+0

類應該有第一個字母大寫(「顏色」而不是「顏色」);) – daveoncode 2013-03-20 14:53:09

+3

@wRAR也許在2013年這是一個合理的問題,但讓我們誠實 - 人們首先轉向StackOverflow,所以這是一個很好的問題。這個問題是第一個谷歌命中「python擴展類」,文檔是第三。 – 2017-07-07 19:02:01

回答

58

用途:

import color 

class Color(color.Color): 
    ... 

如果是這樣的Python 2.x中,你也想從object獲得color.Color,使之成爲new-style class

class Color(object): 
    ... 

這是在Python 3.x中不需要。

+22

值得注意的是,你可以給新類與舊類相同的名稱:'類顏色(顏色):'定義一個新的類替換舊的類,但它是從它派生。 (這似乎是OP正在嘗試做的事情。) – kindall 2013-03-20 15:05:38

+11

'class extended_color(color):'通常是不好的標準 - 'class ExtendedColor(Color):'應該用於類。只是一個挑剔 – TyrantWave 2013-03-20 15:07:27