在其他类中使用继承和调用

时间:2016-11-02 21:49:21

标签: python oop

代码:

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>

所以帮助要求我如何使用重写技术。

1 个答案:

答案 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