Форум сайта python.su
0
Всем привет.
Столкнулся с проблемой, попробую описать на примере:
1. Нужно создать программу, которая по входным условиям будет создавать модель комнаты с определенными параметрами.
Тут все ясно, получается что-то типа такого:
class Room(object): def __init__(self, param): self.param = param def some_func(self): #todo pass
class Door(object): def __init__(self, opened = False, param): self.param = param def some_func(): #todo pass

Отредактировано G-Bond (Дек. 21, 2015 22:17:33)
Офлайн
6
Ну а в чем проблема? Понасоздавать экземпляров класса Door и ими уже оперировать. Создавать например при помощи range()
Офлайн
0
Я так понимаю, создать что-то типа:
list = [] for i in range(random_num): list.append(Room(params))
Офлайн
24
Как-то так, хотя возможно я не совсем понял что Вы хотите :
class Door(object): def __init__(self, param, opened=False): self.param = param self.opened = opened @property def is_opened(self): if self.opened: return "Opened" return "Closed" class Room(object): def __init__(self, param): self.param = param self.doors = None def add_doors(self, doors_num): self.doors = {"door_{}".format(x): Door("param") for x in range(doors_num)} def __getattribute__(self, item): if item.startswith("door_"): attr = self.doors.get(item) if not attr: raise AttributeError("No such door") return attr return super().__getattribute__(item) r = Room('1') r.add_doors(5) print(r.door_1.is_opened) r.door_1.opened = True print(r.door_1.is_opened)
Офлайн