【问题标题】:how can i iterate default attribute in python?如何在 python 中迭代默认属性?
【发布时间】:2020-04-23 08:05:37
【问题描述】:
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

所以我想要的是当创建第一个票证实例时,属性 availableseats 更改为 9,当创建另一个实例时,availableseats 更改为 8

【问题讨论】:

    标签: python python-3.x class oop object


    【解决方案1】:

    假设availableSeatsevents 的属性,您应该有一个事件注册表,将事件名称/事件ID 映射到多个可用席位。

    我想这可以存储在类中,尽管票证的初始化意义不大:

    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的意义,完全没用过。

    而且我认为问题的标题和正文之间没有任何关系。

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 2012-08-15
      • 1970-01-01
      • 2016-01-17
      • 2020-10-27
      • 1970-01-01
      • 2013-12-09
      • 2020-08-25
      • 2020-05-18
      相关资源
      最近更新 更多