覆盖父类属性,而无需显式使用父类的名称

问题描述

有两种常见的方法可以从子级调用父级__init__()

  1. 通过明确致电给家长:
class Child(Parent):
    def __init__(self):
        Parent.__init__(self)
  1. 使用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 (将#修改为@)