Код: Выделить всё
class Varz:
_by_name = {}
@classmethod
def __getitem__(cls, name):
if name not in cls._by_name:
cls._by_name[name] = cls(name)
return cls._by_name[name]
def __init__(self, name):
self.name = name
print(Varz['foo'])
#=> TypeError: type 'Varz' is not subscriptable
Код: Выделить всё
class Varz:
_by_name = {}
def __class_getitem__(cls, name):
if name not in cls._by_name:
cls._by_name[name] = cls(name)
return cls._by_name[name]
Код: Выделить всё
@classmethod
def find_or_create(cls, name):
...
Python 3.12.6
Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-getitem