(Галочка там, про что решено.)
Предлагаю внести такие изменение в модуль лабиринта:
- [x] (не делаем) Убрать приставки get и set (Возможно не везде)
Примеры:
labyrinth.unique('Vasya') #Вернёт уникальный объект "Вася", т.к передано только свойство
labyrinth.unique('Vasya', VasyaObject) #Установит ключ, т.к. передано свойство и значение
У всех остальных методов лабиринта нет сеттеров (только геттер) и не может быть по смыслу.
object.parent() # Вернёт родителя
object.parent(newParent) # Установит родителя
и т.д.
У всего кроме флагов так сделать можно.
- [x] (делаем) Полностью запретить __init__ в объектах.
плюсы:
-
Уйдёт огромное кол-во мусорных функций вида smth_safe
-
Не нужно будет париться о том, где писать: в __init__ или в set_settings
(p.s. к пункту 1: Наверное лучше settings, а не set_settings)
минусы:
Я их не вижу
- [x] (делаем) Убрать or_key аргумент у get_objects (objects в будущем)
Ну он же действительно бесполезный и некрасивый при том.
Сейчас так:
Объект -> строка <- кнопки;
Нужно так:
Объект -> ход -> строка; кнопка -> ход;
Хотя бы на уровне, что смотрим только на те объект, lr-тип которых подходящий.
Т.е проходимся только по нужным массивам, а не сразу по всем объектам.
bar.str() # а не str(bar)
button.dict() # а не dict(button)
def add_meta(cls, *args, **kwargs):
if not 'metadate' in cls.__dict__:
cls.metadate = {}
for key in args: cls.metadate[key] = True
cls.metadate.update(kwargs)
return cls.metadate
def get_meta(cls):
if not 'metadate' in cls.__dict__:
return {}
return cls.metadate
# декоратор для класса описывающего уникальный предмет
def unique(key):
"""
key - ключ, который будет установлен
этому уникальному объекту.
"""
def unique_decorator(cls):
old_function = cls.set_settings
def set_settings(self, *args, **kwargs):
"""
Новая функция дополнительно будет устанавливать
указанный уникальный ключ.
"""
data = old_function(self, *args, **kwargs)
self.labyrinth.set_unique(self, key)
return data
# изменяем функцию в классе.
cls.set_settings = set_settings
add_meta(cls, 'unique_object')
return cls
return unique_decorator
В самом лабиринте можно добавить проверку того, что объектов уникального класса <= 1
P.S От количества get и set у меня рябит в глазах(
(Галочка там, про что решено.)
Предлагаю внести такие изменение в модуль лабиринта:
- [x] (не делаем) Убрать приставки get и set (Возможно не везде)Примеры:
У всех остальных методов лабиринта нет сеттеров (только геттер) и не может быть по смыслу.
и т.д.
У всего кроме флагов так сделать можно.
- [x] (делаем) Полностью запретить__init__в объектах.плюсы:
Уйдёт огромное кол-во мусорных функций вида
smth_safeНе нужно будет париться о том, где писать: в
__init__или вset_settings(p.s. к пункту 1: Наверное лучше
settings, а неset_settings)минусы:
Я их не вижу
- [x] (делаем) Убратьor_keyаргумент уget_objects(objectsв будущем)Ну он же действительно бесполезный и некрасивый при том.
Сейчас так:
Объект -> строка <- кнопки;
Нужно так:
Объект -> ход -> строка; кнопка -> ход;
Хотя бы на уровне, что смотрим только на те объект,
lr-типкоторых подходящий.Т.е проходимся только по нужным массивам, а не сразу по всем объектам.
get, методыstrиdictВ самом лабиринте можно добавить проверку того, что объектов уникального класса <= 1
P.S От количества
getиsetу меня рябит в глазах(