尝试在子类中调用超类的方法变量。如果可能,这是一种好的做法还是设计?
我已经编写了示例代码来执行流程。下面是代码
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
答案 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)