python 类将自身的实例添加到列表中

Gra*_*tas 2 python initialization class object

我有一堂关于房间的课。我希望每次使用该类创建对象时,该对象都会被添加到所有房间的列表中。客房等级:

class Rooms:
    """Room class, takes type,days,  occupied or not and when it frees up"""
    def __init__(self, room_type, days, occupied, when_free):
        self.room_type = room_type
        self.days = days
        self.occupied = occupied
        self.when_free = arrow.get(when_free,'YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)

任何其他反馈也将受到赞赏!

也不确定我是否应该就此创建新主题,但是否有可能当创建对象并将占用时的 True 传递给对象时,您不需要传递第四个变量,而是将其作为当前日期?简而言之,如果没有第四个变量,它会传递 arrow.get(str(arrow.utcnow()),'YYYY-MM-DD') 代替

弄清楚了我的第二个问题。我确实将init更改为:

def __init__(self, room_type, days, occupied, when_free=str(arrow.get(str(arrow.utcnow()),'YYYY-MM-DD'))):
        self.room_type = room_type
        self.days = days
        self.occupied = occupied
        self.when_free = arrow.get(when_free,'YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)

Ale*_*kov 5

我建议采用比上面稍微优雅和逻辑的方式:

class Building(object):
    def __init__(self):
        self.rooms = []

class Room(object):
    def __init__(self, building=None)

        if building:
            building.rooms.append(self)
        self.building = building

b = Building()
r = Room(b)
Run Code Online (Sandbox Code Playgroud)

这样就不需要每次都调用b.rooms.append,现在更符合OOP。