问题描述
有两种常见的方法可以从子级调用父级__init__()
:
- 通过明确致电给家长:
class Child(Parent):
def __init__(self):
Parent.__init__(self)
- 使用
super()
对父项进行隐式呼叫:
class Child(Parent):
def __init__(self):
super().__init__(self)
第二种方法有一个优点:如果您想从Parent2继承而不是从Parent继承,则只需更改一行即可。在第一种方法中,您必须更改两个。
我的问题如下:可以将相同的推理应用于装饰器吗?
请考虑以下基类:
class Parent:
def __init__(self,value):
self._value = value
@property
def value(self):
return self._value
@value.setter:
def value(self,value_new):
self._value = value_new
如果我只想覆盖子类中的getter,我将执行以下操作:
class Child(Parent):
@Parent.value.getter # Explicit call to the parent class
def value(self):
return self._value
是否可以避免显式调用父级?(就像我们在顶部一样)
下面的代码不起作用,但是会有类似的东西吗?
class Child(Parent):
@super.value.getter # super instead of explicit call to Parent
def value(self):
return self._value
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)