如何解决覆盖父类属性,而无需显式使用父类的名称
有两种常见的方法可以从子级调用父级__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 举报,一经查实,本站将立刻删除。