正确使用UserList和对象

时间:2019-03-23 16:19:14

标签: python list object methods

在理解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,将对象附加到该列表只是一个问题。

1 个答案:

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