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

时间:2019-03-14 21:26:54

标签: python oop inheritance

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

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

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值在子类中有用?但是,如果子类中的Call方法extended_bar()可以正常工作,那么是否有任何方法可以存储超类的方法变量并在子类中使用它呢?

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

hello 20

1 个答案:

答案 0 :(得分:2)

您可以通过__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)
相关问题