使用继承和调用其他类

2024-10-03 00:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

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()

我有四节课。我要做的是,在我的前三个类中,我有继承权。在我的类d中,如果数量是1或2,我尝试调用相应的方法。相反,它给了我这个输出:

 d1 = d('one')
 d1.cgl(1)
 print(d1.memberLevel)

输出:

 <__main__.bb object at 0x036D7BF0>

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


Tags: 代码selfreturninitdefclassaacc
1条回答
网友
1楼 · 发布于 2024-10-03 00:21:39

似乎您希望看到控制台输出:10

因为d1.memberLevel是bb类本身(不是值10,也不是返回值10的函数),所以控制台输出显示<__main__.bb object at 0x036D7BF0>。当print直接调用对象时,这是正确的行为

也许您的最后一行控制台代码应该是:

print(d1.memberLevel.getDis())

另一种选择是在“d”类中赋值:

self.memberLevel = bb().getDis()

成员方法需要“self”,例如:

def getDis(self):
    return 10

相关问题 更多 >