Python属性和继承
假设我有以下代码:Python属性和继承,python,inheritance,attributes,Python,Inheritance,Attributes,假设我有以下代码: class Class1(object): def __init__(self): self.my_attr = 1 self.my_other_attr = 2 class Class2(Class1): def __init__(self): super(Class1,self).__init__() 为什么Class2不继承Class1的属性?您使用错误,请将其更改为 super(Class2, s
class Class1(object):
def __init__(self):
self.my_attr = 1
self.my_other_attr = 2
class Class2(Class1):
def __init__(self):
super(Class1,self).__init__()
为什么Class2不继承Class1的属性?您使用错误,请将其更改为
super(Class2, self).__init__()
基本上,您告诉super查看给定类的上方,因此如果您给出Class1,则永远不会调用uuu init uuuu方法。您使用了错误的方法,请将其更改为
super(Class2, self).__init__()
基本上,你告诉super在给定的类上面查看,所以如果你给Class1,那么永远不会调用uu init uu方法。因为你给super的类是错误的。应该是:
class Class2(Class1):
def __init__(self):
super(Class2,self).__init__()
因为你给super上错了课。应该是:
class Class2(Class1):
def __init__(self):
super(Class2,self).__init__()
你可能还想看看这篇文章:因为我读到我只做Class1__self@Wayne当前位置那篇文章有误导性,有些人不赞成,但它是一本非常有趣和有用的书。多重继承确实是个问题,super更像是解决方案的一部分。选择super就像说安全带坏了,因为在事故中你仍然可能受伤。如果你使用super,你通常会做得更好。nikow,有什么好的读物可以解释为什么super更好吗?@Wayne:这是一本极好的读物,并且明确提到了有害的文章。在MI情况下,使用直接呼叫很快就变得难以置信地难以正确执行,而super仍然更易于管理。然而,如果可能的话,最好完全避免MI。你可能还想看看这篇文章:因为我读到我只会做Class1__self@Wayne当前位置那篇文章有误导性,有些人不赞成,但它是一本非常有趣和有用的书。多重继承确实是个问题,super更像是解决方案的一部分。选择super就像说安全带坏了,因为在事故中你仍然可能受伤。如果你使用super,你通常会做得更好。nikow,有什么好的读物可以解释为什么super更好吗?@Wayne:这是一本极好的读物,并且明确提到了有害的文章。在MI情况下,使用直接呼叫很快就变得难以置信地难以正确执行,而super仍然更易于管理。然而,如果可能的话,最好完全避免MI。