Правильное использование UserList и объектов - PullRequest
0 голосов
/ 23 марта 2019

У меня возникли проблемы с пониманием реализации и использования UserList с объектами.

Для контекстуализации у меня есть файл класса, в котором есть объект File, который нужно открыть, прочитать и т. Д. И т. Д., И объект Client.

В меню «Файл» я открываю и читаю файл Клиента, в котором строка за строкой содержит информацию о Клиенте. Таким образом, я читаю каждый параметр клиента, создаю объект клиента и добавляю объект в список.

Это было бы хорошим решением, но мы вынуждены использовать реализацию UserList.

Я понимаю, что это в основном оболочка (?) Для списков объектов. По сути, объект, который имитирует списки в поведении, а это списки объектов.

Пока все хорошо.

Но я не могу понять, как правильно его реализовать, и я не совсем понимаю скудные примеры его реализации.

Мне не имеет смысла инициализировать UserList каждый раз, когда я создаю объект Client, но также не имеет смысла делать класс 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 голосов
/ 23 марта 2019

Как вы сказали, UserList - это оболочка в списке Python по умолчанию. Он был создан, чтобы предоставить базовый класс для списка, как пользовательские классы. Подробнее в документах.

Таким образом, 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...