我有以下代码,我想要实现以下目标: 请理解我是OOP的新手 1)初始化" B"来自主要功能
2)继承" A级"来自" B班"并且取决于" A类和#34;的变量的某些条件;打电话" D"来自" B"
3)拨打" D类"使用来自" A类和#34;的变量修改它们并打印出来。
4)之后回到" B"为更多条件运行代码。
```
class A(object):
def __init__(self):
super(A,self).__init__()
self.A_var = 0
print('Running A.__init__')
class B(A):
def __init__(self):
super(B,self).__init__()
#B.__init__(self)
def fun2():
self.A_var += 5
#foo = D()
self.fun1
print('Running B.__init__')
print self.A_var
#A.__init__(self)
class D(B,A):
def __init__(self):
#super(A,grandfather).__init__()
#A.__init__(grandfather)
super(D,self).__init__()
#D.__init__(self)
def fun1():
print('Running D.__init__')
self.A_var += 400
print self.A_var
if __name__ == '__main__':
b = B()
b.fun2
```
我想打印出" self.A_var"的价值。来自内部" D"
答案 0 :(得分:0)
您还没有理解继承是什么。 D 的实例是 A和B的实例,因为它继承自它们。您唯一需要做的就是确保在每个super()
方法中调用__init__
;出于某种原因,你已经用完全错误的D.__init__
取代了D中的那个,这将无休止地递归。放回super(D,self).__init__()
。
唯一的另一个变化是删除B.fun2中D的无意义实例化;只需在那里拨打self.fun1()
。
答案 1 :(得分:0)
如果你想从“D类”里面打印出“self.A_var”的值
执行:d.fun1()
结帐此修改后的代码:
class A(object):
def __init__(self):
super(A, self).__init__()
self.A_var = 0
print('Running A.__init__')
class B(A):
def __init__(self):
super(B, self).__init__()
def fun2(self):
self.A_var += 5
print ('Running B.__init__'), self.A_var
class D(B):
def __init__(self):
super(D, self).__init__()
def fun1(self):
self.A_var += 400
print ('Running D.__init__'), self.A_var
if __name__ == '__main__':
d = D()
d.fun2()
d.fun1()
使用此代码输出
Running A.__init__
Running B.__init__ 5
Running D.__init__ 405