如何在python中扩展一个类?

ome*_*ega 79 python interface class

在python中你怎么能扩展一个类?例如,如果我有

color.py

class Color:
    def __init__(self, color):
        self.color = color
    def getcolor(self):
        return self.color
Run Code Online (Sandbox Code Playgroud)

color_extended.py

import Color

class Color:
    def getcolor(self):
        return self.color + " extended!"
Run Code Online (Sandbox Code Playgroud)

但是这不起作用......我希望如果我工作color_extended.py,那么当我创建一个颜色对象并使用该getcolor函数时,它将返回带有字符串"extended!"的对象.到底.此外,它应该从导入gotton init.

假设python 3.1

谢谢

NPE*_*NPE 80

使用:

import color

class Color(color.Color):
    ...
Run Code Online (Sandbox Code Playgroud)

如果这是Python 2.x,你也可以从中派生color.Color出来object,使它成为一个新风格的类:

class Color(object):
    ...
Run Code Online (Sandbox Code Playgroud)

这在Python 3.x中不是必需的.

  • 值得注意的是,您可以为新类提供与旧类相同的名称:`class color(color):`定义一个替换旧类的新类,但它是从它派生的.(这似乎是OP试图做的事情.) (29认同)
  • `class extended_color(color):`通常是坏标准 - `class ExtendedColor(Color):`应该是类.只是一个挑剔 (15认同)
  • 这创建了一个新类。它不会延续旧的。 (4认同)
  • 菜鸟问题:你为什么不使用`__init__`? (2认同)
  • @Mentalist - 由于该方法是在“color”模块中现有的“Color”类的基础上创建一个名为“Color”的新自定义类,因此您只需要实现重载定义。例如,如果您没有在新类中实现“__init__()”方法,但您所基于的类中有一个方法,则它将仅使用基类的“__init__()”方法。 (2认同)

aex*_*exl 5

class MyParent:

    def sayHi():
        print('Mamma says hi')
Run Code Online (Sandbox Code Playgroud)
from path.to.MyParent import MyParent

class ChildClass(MyParent):
    pass
Run Code Online (Sandbox Code Playgroud)

的实例ChildClass将继承该sayHi()方法。