2013-03-20 193 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