首页 > 解决方案 > 解决覆盖的方法?

问题描述

如果我们继承一个类并且如果发生方法覆盖,则在 c++ 范围解析运算符用于解决该问题。python有什么办法???这是一个例如代码:

class a:
    def c(self):
        print('base class')
class b(a):
    def c(self):
        print('derived class')
d=b()
d.c()

在这里,我尝试使用对象 d 访问基类的方法 c。怎么可能做到???

标签: pythonoverriding

解决方案


好的,代码如下:

class a:
    def c(self):
        print('base class')
class b(a):
    def c(self):
        print('derived class')

d=b()
super(b, d).c() # <<--- inline access to super(base) c method

如果您正在寻找更好的方法,可以将此方法添加到子类中,如下所示:

class a:
    def c(self):
        print('base class')
class b(a):
    def c(self):
        print('derived class')
    def c_base(self): # <-- built in access to super(base) c method
        super().c()

d=b()
b.c_base() # <<--- call the method

更新:

您可以通过将类或其子类的实例发送到该方法来通过其名称访问 base 的方法:

Parrent.OverriddenMethod(object_of_child)

在您的示例中:

a.c(d)

推荐阅读