如何使方法变量可用于继承的子类?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (10)

试图在子类中调用超类的方法变量。这有可能,如果可能的话,这是一个好的做法还是设计?

我编写了一个示例代码来执行流程。下面是代码

class bar_for_foo_mixin():
    def __init__(self):
        self.z =0

    def bar(self, q):
        x=2
        y=8
        bar_for_foo_mixin.z= x+y+q
        print(bar_for_foo_mixin.z)

    def extented_bar(self):
        self.bar(10)


class myfoo(bar_for_foo_mixin):
    def __init__(self):
        super(myfoo, self).__init__()
        print("hello",self.z)


class oldFoo():
    def __init__(self):
        self.var = bar_for_foo_mixin()

        self.var.bar(10)

现在我如何制作Z值并使其在子类中有用?但是如果extended_bar()子类中的Call方法上面的代码工作正常,但有没有办法存储超类的方法变量并在子类中使用它?

第三类调用栏方法。 预期输出打印。Z vaue应该存储在超类方法中完成的计算bar

hello 20
提问于
用户回答回答于

您可以通过函数__init__使子类的__init__方法调用基类的方法super()

class myfoo(bar_for_foo_mixin):
    def __init__(self):
        super().__init__()
        print("hello",self.z)

此外,由于z初始化为实例变量,因此您的bar函数应将其更新为绑定到的变量self而不是类:

def bar(self, q):
    x=2
    y=8
    self.z= x+y+q
    print(self.z)

扫码关注云+社区

领取腾讯云代金券