Как я могу повторить атрибут по умолчанию в python? - PullRequest
0 голосов
/ 23 апреля 2020
class Ticket:
    availableSeats = 10

    def __init__(self, availableSeats, eventName, ticketId, date, time, venue):
        self.availableSeats = availableSeats
        self.eventName = eventName
        self.ticketId = ticketId
        self.date = date
        self.time = time

    def updateSeatsAvailable(self):
        self.availableSeats = self.availableSeats-1
        return self.availableSeats

так что я хочу, чтобы при создании первого экземпляра тикета атрибуты доступных мест менялись на 9, а при создании другого экземпляра доступные места менялись на 8

1 Ответ

1 голос
/ 23 апреля 2020

Предполагая, что availableSeats является свойством событий , у вас должен быть реестр событий, отображающий имена событий / идентификаторы событий на количество доступных мест.

Я полагаю, что это может быть хранится в классе, хотя инициализация билетов не имеет большого смысла:

class Ticket:
    events = {}

    def __init__(self, availableSeats, eventName, ticketId, date, time, venue):
        self.events.setdefault(eventName, availableSeats)
        self.eventName = eventName
        self.ticketId = ticketId
        self.date = date
        self.time = time

    def updateSeatsAvailable(self):
        self.events[self.eventName] -= 1
        return self.events[self.eventName]

Хотя, насколько я понимаю, экземпляры Ticket, вероятно, должны иметь ссылку на объект события, сказал объект события будет хранить связанную с событием информацию (доступные места, возможно, дата, время и место в зависимости от).

И наоборот, Ticket должен быть переименован в Event, ticketId не должен быть частью этого, возможно, другие поля не должны также зависеть от обработки, например, многодневных или многопользовательских событий (но тогда в этом событии, вероятно, должны храниться проверочные данные, относящиеся к ним).

Также не вижу смысла availableSeats в классе, он полностью не используется.

И я не вижу никакой связи между названием вопроса и телом.

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