【发布时间】:2021-06-19 09:25:02
【问题描述】:
我正在玩类继承,我想知道是否可以在不重写整个事情的情况下更改子类中继承方法的各个方面?
例如:
class Parent:
def _init_(self, x):
self.x = x
def foo(self):
a = self.x
if a > 0:
forward = True
elif a < 0:
forward = False
return forward
class Child1(Parent):
def foo(self, y=None, bool=False):
if bool:
a = y
else:
a = self.x
super().foo()
class Child2(Parent):
pass
我正在寻找的是,如果我调用Child1.foo,它可以在运行之前重新分配变量a
方法,在父类中定义。其中a 取决于y 和bool 参数通过Child1 中的重写方法传递:
print(Child1(2).foo(-2, True))
# => False
print(Child1(2).foo())
# => True
print(Child2(2).foo())
# => True
这可能吗,还是我只需要为每个类重写一个新方法?
【问题讨论】:
-
是可以的,你需要将你想要定制的部分提取到他们自己的方法中,这样每个子类都可以只修改那个部分。
标签: python python-3.x inheritance methods subclass