在理解UserList与对象的实现和使用时遇到了麻烦。
要进行上下文化,我有一个类文件和一个客户端对象,该类文件具有要打开,读取等的File对象。
在“文件”中,我打开并阅读客户的文件,其中逐行包含客户的信息。 这样,我读取了Client的每个参数,创建了一个Client对象,然后将该对象附加到List。
这是一个不错的解决方案,但是我们被迫使用UserList的实现。
我了解它基本上是对象列表的包装(?)。 基本上,是一个模仿行为列表的对象,它们是对象列表。
到目前为止很好。
但是对于我一生来说,我只是想不出如何正确实施它,而且我真的不了解实施它的稀有例子。
每次创建一个Client对象时,初始化一个UserList对我来说都没有意义,但对File类(它是UserList的子类)来说,对我来说也没有意义,因为我们还有2种类型的文件处理的文件(专家和计划)。
因此,我只能假定我的类/对象结构不正确,因此我愿意接受建议。
main.py
inFileClients = File("2019y01m12clients09h00.txt") # use sys.argv[1:]
inFileClientsHeader, inFileClientsContent = inFileClients.readFileClient()
File.py
def readFileHeader(self, inFile):
#Cut this, only for context
return Header(date, time, scope)
def readFileContentCli(self, inFile):
clientList = []
#Cut this, only for context
clientList.append(Client(name, local, start_date, start_hour, max_price, min_rep, domain, job_dur))
clientList = UserList.__init__(self, clientList)
return clientList
Client.py然后仅使用接收到的数据创建一个对象。 因此,在我看来,已经创建了UserList,将对象附加到该列表只是一个问题。
答案 0 :(得分:0)
正如您所说的,UserList是默认python列表上的包装器。创建它是为了为列表(如自定义类)提供基类。更多in the docs.
因此,UserList的行为类似于默认的List对象。要创建它,不直接使用 init 方法,而是使用构造函数创建它
my_list = UserList()
然后,您可以像往常一样添加和弹出数据。
my_list.append(x)
my_list.remove(x)
保存数据的真实列表可以通过
获得。my_list.data
在您的示例中,您可能想要实现类似于“客户的容器”的功能。
from collections import UserList
class ClientList(UserList):
'''
your implemented client list
class that contains some
methods on list
'''
pass