ChildClass object 没有属性栏
ChildClass object has no attribute bar
class Foo(Baz, Qux):
def __init__(self, bar, *args, **kwargs):
super(Foo, self).__init__(bar=bar, *args, **kwargs)
class Baz:
def __init__(self, bar, *args, **kwargs):
self.bar = bar
这是我的 classes 的结构,Foo class 继承了 Baz class。但是,当我尝试 运行 代码时,出现以下错误
Foo object has no attribute bar
据我了解,super(childclass, self).__init__(parent, attributes)
也应该初始化 parent class。为什么 bar
也应该出现在 child class 中?
我按照以下堆栈答案来实现这个:Calling parent class __init__ with multiple inheritance, what's the right way?
编辑
class Qux:
def __init__(self, xyz, *args, **kwargs):
self.xyz = xyz
def print_barqux(self):
print(self.xyz)
class Baz:
def __init__(self, bar, *args, **kwargs):
self.bar = bar
class Foo(Baz, Qux):
def __init__(self, bar, xyz, *args, **kwargs):
super(Foo, self).__init__(bar=bar, xyz=xyz)
def printbar(self):
super(Foo, self).print_barqux()
foo = Foo(bar="abcd", xyz="abcdef")
print(foo.printbar())
输出:
Traceback (most recent call last):
File "./prog.py", line 21, in <module>
File "./prog.py", line 17, in printbar
File "./prog.py", line 6, in print_barqux
AttributeError: 'Foo' object has no attribute 'xyz'
使用代码添加错误堆栈跟踪
每个 class 必须调用 super.__init__
:
class Qux:
def __init__(self, xyz, *args, **kwargs):
super().__init__(*args, **kwargs)
self.xyz = xyz
def print_barqux(self):
print(self.xyz)
class Baz:
def __init__(self, bar, *args, **kwargs):
super().__init__(*args, **kwargs)
self.bar = bar
class Foo(Baz, Qux):
def __init__(self, bar, xyz, *args, **kwargs):
super().__init__(bar=bar, xyz=xyz)
def printbar(self):
super().print_barqux()
foo = Foo(bar="abcd", xyz="abcdef")
print(foo.printbar())
class Foo(Baz, Qux):
def __init__(self, bar, *args, **kwargs):
super(Foo, self).__init__(bar=bar, *args, **kwargs)
class Baz:
def __init__(self, bar, *args, **kwargs):
self.bar = bar
这是我的 classes 的结构,Foo class 继承了 Baz class。但是,当我尝试 运行 代码时,出现以下错误
Foo object has no attribute bar
据我了解,super(childclass, self).__init__(parent, attributes)
也应该初始化 parent class。为什么 bar
也应该出现在 child class 中?
我按照以下堆栈答案来实现这个:Calling parent class __init__ with multiple inheritance, what's the right way?
编辑
class Qux:
def __init__(self, xyz, *args, **kwargs):
self.xyz = xyz
def print_barqux(self):
print(self.xyz)
class Baz:
def __init__(self, bar, *args, **kwargs):
self.bar = bar
class Foo(Baz, Qux):
def __init__(self, bar, xyz, *args, **kwargs):
super(Foo, self).__init__(bar=bar, xyz=xyz)
def printbar(self):
super(Foo, self).print_barqux()
foo = Foo(bar="abcd", xyz="abcdef")
print(foo.printbar())
输出:
Traceback (most recent call last):
File "./prog.py", line 21, in <module>
File "./prog.py", line 17, in printbar
File "./prog.py", line 6, in print_barqux
AttributeError: 'Foo' object has no attribute 'xyz'
使用代码添加错误堆栈跟踪
每个 class 必须调用 super.__init__
:
class Qux:
def __init__(self, xyz, *args, **kwargs):
super().__init__(*args, **kwargs)
self.xyz = xyz
def print_barqux(self):
print(self.xyz)
class Baz:
def __init__(self, bar, *args, **kwargs):
super().__init__(*args, **kwargs)
self.bar = bar
class Foo(Baz, Qux):
def __init__(self, bar, xyz, *args, **kwargs):
super().__init__(bar=bar, xyz=xyz)
def printbar(self):
super().print_barqux()
foo = Foo(bar="abcd", xyz="abcdef")
print(foo.printbar())