代码之家  ›  专栏  ›  技术社区  ›  myol

同时使用父属性和重写子属性的继承

  •  2
  • myol  · 技术社区  · 7 年前

    我在使用继承权。在我的一个方法中,我希望同时使用parent属性和over-riden子属性。类似的东西;

    class Parent(object):
        att = 'parent'
    
        def my_meth(self):
            return super().att + self.att
    
    class Child(Parent):
        att = 'child'
    
    print(Child().my_meth())
    

    打印出来的;

    父母子女

    但上述代码给出了错误;

    “super”对象没有属性“options”

    这有可能吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   b-fg    7 年前

    我认为访问被子类覆盖的父类的静态属性的方法是在方法中直接引用父类本身:

    class Parent(object):
        att = 'parent'
    
        def my_meth(self):
            return Parent.att + self.att
    
    class Child(Parent):
        att = 'child'
    
    print(Child().my_meth()) # parentchild
    
        2
  •  1
  •   Amit Nanaware    7 年前

    以巨蟒为例 document super关键字返回一个代理对象,该对象将方法调用委托给类型的父类或同级类。不能将其用于成员变量。