当您有需要在所有继承对象之间共享的方法时,继承是有意义的。你的例子可能是在这种情况下:
class color(object):
def __str__(self):
return self.name
所以当我继承了我能:
class red(color):
def __init__(self):
self.name = 'red'
任何时候我打印或颜色转换为字符串我会得到我初始化的名称(”红色“)。
如果你来自常见的静态(编译)语言,我想在这里注意一个重要的事情。 __init__
是不一样的一个普通的构造函数(是不是真的一个呢?),所以如果我的色彩中定义:
class color(object):
def __init__(self):
print 'Init color!'
def __str__(self):
return self.name
这不会得到自动制作的“红色”对象在打印时,除非你明确调用基本初始化(如果感兴趣,可以使用color.__init__(self)
)。
这一点使我重新定义了继承的方法(__init__
在我的最后一个例子中)。 Python使用覆盖在这种情况下,因此由(最小的)的孩子中定义的方法被调用,除非到基本方法的显式调用时,ALA:
base.some_method(child_object,...)
就像使用`__init__`。这有点显示了所有python对象的多态性质。
这些都是基础知识,只是尝试和开始一些课程。
这似乎不是继承。 –
@DanielRoseman对不起,如果你建议更好的措辞,我可以编辑这个问题。 – mart1n