Ede*_*nor 2 python inheritance python-3.x
我希望能够从父类中回收使用该父类中的第二个方法的方法。然而,第二种方法在子类中被重写。我希望回收的父方法在从子类调用时使用新的重写的第二个方法。我希望它如何工作的一个例子将使这一点更清楚:
class Parent:
def method1(self, num):
return num**2
def method2(self, list_size):
return [self.method1(i) for i in range(list_size)] #List of squares
class Child(Parent):
def method1(self, num): #Overrides corresponding parent method
return num**3
def method2(self, list_size):
return super().method2(list_size) #Returns a list of cubes using child's method 1.
Run Code Online (Sandbox Code Playgroud)
这在python3中可能吗?或者调用父类的方法2也会使用父类的方法1吗?我希望重用父类的大部分内容,因为子类仅在几个方面有所不同。像这样在父类中嵌套的方法使其更加通用。
谢谢!
编辑:我忘记用简单的代码来测试它!如果有人想知道的话,它确实像我想要的那样工作!
小智 6
简短的回答:是的。刚刚尝试了带有打印的代码的稍微修改版本。
class Parent:
def method1(self):
print("Parent method1")
def method2(self):
print("Parent method2")
self.method1()
class Child(Parent):
def method1(self):
print("Child method1")
def method2(self):
print("Child method2")
super().method2()
c = Child()
c.method2()
Run Code Online (Sandbox Code Playgroud)
这是输出:
Child method2
Parent method2
Child method1
Run Code Online (Sandbox Code Playgroud)
如您所见,使用的 method1 是子方法。