如何在Python中初始化子类UserList的内容

2024-06-01 05:22:29 发布

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

这是有效的:

class customList(list):
    def __init__(self, liste):
        list.__init__(self, liste)
myList = customList([4])

这不会:

^{pr2}$

我已经读过子类化UserList比子类化list中的构建更好,因为后者的行为未知,但是当从UserList子类化时,我应该如何在我的__init__中启动列表?在


Tags: self列表initdeflistclassmylistuserlist
2条回答

您应该使用UserList的构造函数来初始化它,而不是list的构造函数:

class customList(UserList):
    def __init__(self, liste):
        super().__init__(liste)

UserList是其内部data参数的包装器。在

from collections import UserList

class customList(UserList):
    def __init__(self, liste):
        self.data = liste
myList = customList([4])

print(myList) # [4]
myList.append(5)
print(myList) # [4, 5]

您可能希望使用UserList而不是list作为基类的主要原因是将底层列表作为属性访问,只有当您出于某种原因想重新分配它时,这才是真正重要的。在

相关问题 更多 >