python - 超级父类和传递类变量的大多数pythonic方式
问题描述
我有一个父类和一个子类。父类需要一些预定义的类变量才能运行call()
。对象未在子类中定义。
问题:在super()
不更改父类的情况下调用时传递变量的最 Pythonic 方式是什么?
例子:
class Parent:
def __init__(self):
self.my_var = 0
def call(self):
return self.my_var + 1
class Child(Parent):
def __init__(self):
self.different_var = 1
def call(self):
my_var = 0
super().__call__() # What is the most pythonic way of performing this line
我知道我可以my_var
在子类中创建一个类对象,它会起作用,但必须有一个更好的。如果不是,那也是一个可以接受的答案。
解决方案
您的版本只是一个混合。你必须__init__
对super
.
class Parent:
def __init__(self):
self.my_var = 0
def call(self):
return self.my_var + 1
class Child(Parent):
def __init__(self):
super().__init__() #init super
self.different_var = 1
def call(self):
self.my_var = 50
return super().call() #return call() from super
c = Child()
print(c.call()) #51
推荐阅读
- android - google-signin 失败并出现 [错误:DEVELOPER_ERROR]
- composer-php - 在 TYPO3 Composer 项目中开发扩展
- git - 添加特定文件而不输入整个路径?
- node.js - 如何将 HTML 中的按钮链接到 node.js 文件
- angular - ngx-datatable ERESOLVE 无法解析依赖树
- sql-server - 如何检查 Blazor Server 应用程序的数据库中是否存在用户输入?
- python - 如何为 Odoo 智能按钮设置顺序?
- python - 在 Python 中从 PDF 文件中提取文本并保留原始布局
- unity3d - URP 光照着色器打破了静态批处理
- python - Pymodbus 服务器写回调