您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

简单的python继承

简单的python继承

要建立在其他人都说过的基础上,是的,您需要调用__init__方法

通常最好使用super。但是,在某些情况下(尤其是当您从多个类继承时),这可能是一个大难题。我将避免赘述,不乏讨论它各种文章。(此外,其他一些“特殊”功能也有一些奇怪之处。例如,您可以做到,super(SomeCls, self).__getitem__(5)super(SomeCls, self)[5]不起作用。)

至于为什么它的使用是一个好主意一个简单的例子,你可以把DogCat继承Mammal(从继承Animal),并没有改变地方比其他类的代码DogCat继承。

至于您的tom实例为什么没有tom.nlegs的原因,是因为您没有调用Animal__init__方法

还要记住,并不是在初始化时就需要设置所有内容在这个例子中,它更有意义并不像一套东西nlegs__init__方法。而是直接在类中进行设置。例如

class Mammal(object):
    nlimbs = 4
    def __init__(self):
        print "I'm a mammal!"

class Cat(Mammal):
    def __init__(self, color="calico"):
        self.color = color
        super(Cat, self).__init__()
        print "I have {0} legs I am {1}".format(self.nlimbs, self.color)

class FiveLeggedCat(Cat):
    nlimbs = 5

基本上,如果某事可能因实例而异(例如,猫的颜色)或需要在初始化时完成(例如,打开文件),则应将其设置为__init__

否则,如果我们希望该类的任何实例都相同,那么直接在类定义中进行设置会更干净。

同样,以这种方式设置的属性将可用于文档工具(例如,内置help函数),而在初始化时设置的属性将不可用。

python 2022/1/1 18:31:44 有197人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶