python - 解决覆盖的方法?
问题描述
如果我们继承一个类并且如果发生方法覆盖,则在 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。怎么可能做到???
解决方案
好的,代码如下:
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)
推荐阅读
- python - 根据dict多次修改字符串
- c++ - 错误:标题定义声明中的一个声明中有多种类型
- react-native - Strapi,使用 Auth0 访问 Strapi 中的用户数据
- ios - 如何从 WKWebView 将 PDF 下载到 iOS 文件应用程序?
- css - 有没有办法在 Angular 动画过渡期间应用恒定的 CSS 样式?
- mysql - 为什么 SUM 查询即使对于少量记录也非常慢?
- python - 将虚拟环境与自制软件一起使用
- java - firehose 关闭时搜索错误处理解决方案
- sql - 如何区分 Postgres SQL 中的字符串和 json?
- reactjs - 使用内部函数更新状态。我们应该使用它吗?