Концептуальный вопрос новичка об ООП и постоянстве - PullRequest
6 голосов
/ 02 января 2011

Это очень простой вопрос об ООП (я использую python, но на самом деле это концептуальный вопрос, поэтому не зависит от языка).Я посмотрел вокруг, но ни один учебник или книга не освещают этот конкретный вопрос.Если мне неясно, я приношу свои извинения и буду рад разъяснить все, что я написал.

Допустим, я создаю простую адресную книгу, которую я хочу записать на диск с помощью pickle.У меня есть класс с именем Contact, где __init__ принимает некоторые аргументы (firstName и lastName), и у меня есть меню, где вы можете создавать контакты, редактировать их и т. Д. Для всех примеров ООП, которые я видел, они будут делать что-то вроде...

bob = Contact('Bob', 'Smith') 
jane = Contact('Jane', 'Smith')

... для создания новых экземпляров Contact.Но все они определены до времени выполнения.Что происходит, когда я хочу, чтобы все эти экземпляры создавались на лету с помощью пользовательского ввода?Создаю ли я новые экземпляры для каждого человека?Как бы я сделал это из пользовательского ввода?Тогда просто запишите все экземпляры в список и засолите его?Или вы делаете что-то вроде ...

firstName, lastName = raw_input("Enter first name: "), raw_input("Enter last name: ")    
contact = Contact(firstName, lastName)

... затем просто добавляете контакт в список и получаете новые значения для экземпляра контакта каждый раз, когда я хочу добавить пользователя?Это ключевая концепция, которую я на самом деле не понимаю (потому что я нигде не видел ее объясненной).Все примеры, которые я видел, не делают выше, но вместо этого создают новые экземпляры для каждой вещи / человека, но все они предопределены и не создаются на лету.Я был бы очень благодарен за то, что кто-то объяснил мне эту концепцию.

Ответы [ 2 ]

3 голосов
/ 02 января 2011

Ваш пример именно так и работает.

1 голос
/ 02 января 2011

Да, как правило, это то, как вы это делаете - создавайте массивы из ваших объектов.Или некоторые другие виды коллекций, в зависимости от вашего языка и / или структуры.При создании нового объекта вы сначала создаете его во временной переменной, а затем вставляете в свою коллекцию.

Иногда, когда у вас много объектов, вы не загружаете их все сразупостоянное хранилище (например, БД или файл).Вы просто загружаете тот (или несколько), с которым вам нужно работать.Если вы загрузите только один, он может получить специальную переменную.Некоторые снова получат коллекцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...