Python class object creation in inheritance
我在python中有以下类:
1 2 3 4 5 6 7 8 9 10 11 12 | class Foo(): def __init__(self): self.id=8 self.value=self.get_value() #Mark-1 def get_value(self): pass def should_destroy_earth(self): return self.id ==42 class Baz(Foo): def get_value(self,some_new_parameter): pass |
在这里,我可以创建一个foo类的对象,如下所示:
ob1 = Foo() # Success
但是,如果我尝试创建baz对象,它会给我一个错误:
Ob2 = Baz() # Error
1 2 3 4 5 | File"classesPython.py", line 20, in <module> ob2 = Baz() File"classesPython.py", line 4, in __init__ self.value=self.get_value() TypeError: get_value() takes exactly 2 arguments (1 given) |
如果我移除类foo的第三行中的"self.get_value",我就可以创建一个类baz的对象。
当我们继承python中的类时,超类的init方法不是由子类继承的,我们需要显式地调用它们(例如superclass.init(self))不是这样吗?
因此,当我创建baz对象时,默认情况下不会调用foo()类的uuinit_u方法。那么为什么我不能为baz创建对象呢?
不,你有一些基本的误解。
python将假定您希望对子类使用相同的
Isn't is the case that when we inherit a class in python, the init
method of the superclass isn't inherited by the subclass and we need
to explicitly call them (e.g. Superclass.init(self) )?
不,只有当子类有一个