通过super()追加的变量在哪里。追加(名称)?

2024-10-03 06:25:53 发布

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

我是Python编码新手,我有一个问题。代码如下:

class ManageContact(list):

    def addManager(self, name, number):
        if not isinstance(name, str):
            raise TypeError('please enter a string')

        super().append(name)\

它很好用。但是,我不知道通过super()/append(name)追加的变量“name”在哪里。你能帮忙吗?先谢谢你

我试过运行代码。它可以工作,即正在创建对象,并且可以运行该方法。但我不知道在哪个列表中添加了变量“name”


Tags: 代码nameselfnumber编码ifdefnot
3条回答

正在将name添加到继承列表的self对象中。因此,您可以使用self[0]self[1]等来访问它。print(self)将打印整个列表

如果你觉得这不是直观的,那么你应该考虑重新设计你的班级。直接继承list更好,还是在类中有一个list成员更清楚?请记住,现在,您的类具有列表中所需的所有方法;这真的是你想要的吗

谢谢大家的帮助!我意识到我犯了一个愚蠢的错误。类本身将作为一个列表,因此它的所有实例也将是列表(尽管每个对象都是一个单独的列表,但没有主列表)。因此,eric.m的建议更好(在类defn中声明一个列表变量)。而不是直接从列表类继承)

我是新来的,所以这个愚蠢的问题

再次感谢大家

您可能应该将列表移动到一个变量而不是一个超类,即

class ManageContact(list):
    def __init__(self) -> None:
        self.Managers: list = []

    def addManager(self, name, number) -> None:
        if not isinstance(name, str):
            raise TypeError('please enter a string')

        self.Managers.append(name)

然后,该名称将存储在instance.Managers

相关问题 更多 >