My class Item
описывает некоторые элементы, которые естественно известны по их числовому идентификатору (0, 1, 2, ...).Я реализовал реестр внутри класса, который индексирует все объекты по их идентификатору.У меня также есть метод, который извлекает объект по его идентификатору:
class Item
_registry = []
def __init__(self):
self._registry.append(self)
# ...
@classmethod
def get_item_by_id(cls, k):
return cls._registry[k]
# ...
Это разумный дизайн?
Если это так, можно ли разрешить подписки для Item
сам класс?Я могу (я думаю) определить __getitem__
в метаклассе Item
, что позволяет использовать синтаксис Item[2]
вместо Item.get_item_by_id(2)
.
Если у него есть какие-либо проблемы (например, слишком странные, это может привести кнежелательные побочные эффекты и т. д.), пожалуйста, дайте мне знать.