PYTHON: 如何从 child class 到 运行 一个来自 parent 但基于不同 if 条件的方法?
PYTHON: How to have a child class to run a method from parent but based on different if conditions?
我有 2 个 child classes 在不同的条件下执行相同的代码。
class Child1(Parent):
...
def updateChart(self):
if self.value % 15 == 0:
self.value += 5
class Child2(Parent):
...
def updateChart(self):
if self.value % 30 == 0:
self.value += 5
是否可以将方法本身移动到 parent class 但 if 条件具有某种通用的 CONDITION 占位符?并且这个占位符在 child class 在 init?
中被赋予了正确的值
class Parent:
def __init__(self, mod):
self.mod = mod
self.value = 0
def updateChart(self):
print(f"{type(self)} before update self.value={self.value} (mod={self.mod})")
if (self.value % self.mod) == 0:
self.value += 5
print(f"{type(self)} updated self.value={self.value} (mod={self.mod})")
else:
# print(f"{type(self)} no update ({self.value} % {self.mod} != 0)")
pass
class Child1(Parent):
def __init__(self):
super().__init__(mod=15)
class Child2(Parent):
def __init__(self):
super().__init__(mod=30)
for i in range(0, 61, 5):
c1 = Child1()
c1.value = i
c1.updateChart()
c2 = Child2()
c2.value = i
c2.updateChart()
我有 2 个 child classes 在不同的条件下执行相同的代码。
class Child1(Parent):
...
def updateChart(self):
if self.value % 15 == 0:
self.value += 5
class Child2(Parent):
...
def updateChart(self):
if self.value % 30 == 0:
self.value += 5
是否可以将方法本身移动到 parent class 但 if 条件具有某种通用的 CONDITION 占位符?并且这个占位符在 child class 在 init?
中被赋予了正确的值class Parent:
def __init__(self, mod):
self.mod = mod
self.value = 0
def updateChart(self):
print(f"{type(self)} before update self.value={self.value} (mod={self.mod})")
if (self.value % self.mod) == 0:
self.value += 5
print(f"{type(self)} updated self.value={self.value} (mod={self.mod})")
else:
# print(f"{type(self)} no update ({self.value} % {self.mod} != 0)")
pass
class Child1(Parent):
def __init__(self):
super().__init__(mod=15)
class Child2(Parent):
def __init__(self):
super().__init__(mod=30)
for i in range(0, 61, 5):
c1 = Child1()
c1.value = i
c1.updateChart()
c2 = Child2()
c2.value = i
c2.updateChart()