代码:
class aa:
def getDis():
return 0
class bb(aa):
def getDis():
return 10
class cc(aa):
def getDis():
return 15
class d:
def __init__(self,cust):
self.cust = cust
self.memberLevel = aa()
def cgl(self,amt):
if amt ==1:
self.memberLevel = bb()
elif amt ==2:
self.memberLevel = cc()
else:
self.memberLevel = aa()
我有这四个班级。我想要做的是,在我的前三个班级中,我有继承权。在我的课程中,我试图调用相应的方法,如果金额是1 0r 2。相反,它给了我这个输出:
d1 = d('one')
d1.cgl(1)
print(d1.memberLevel)
输出:
<__main__.bb object at 0x036D7BF0>
所以帮助要求我如何使用重写技术。
答案 0 :(得分:2)
您似乎希望看到控制台输出:10
因为d1.memberLevel是bb类本身(不是值10,而不是返回值10的函数),控制台输出显示<__main__.bb object at 0x036D7BF0>
。当print
直接对象时,这是正确的行为。
也许你的最后一行控制台代码应该说:
print(d1.memberLevel.getDis())
另一个选择是在“d”类中分配值:
self.memberLevel = bb().getDis()
成员方法需要“自我”,例如:
def getDis(self):
return 10