У меня есть иерархия классов, которую я хочу зарегистрировать, чтобы впоследствии получить доступ к ней. До сих пор я делал это вручную:Как запустить код при оценке класса Python
class FirstClass(MyBaseClass):
....
registry.register(FirstClass)
class SecondClass(FirstClass):
....
registry.register(SecondClass)
Я ищу способ позвонить registry.register(Class)
, когда класс вычисляется (то есть, когда кто-то импортирует пакет с классом), без вызова это явно.
Наверное, мне нужно что-то добавить к MyBaseClass
, но я не мог понять, что. Все специальные методы, по-видимому, связаны между собой, а не связаны с классом.
Есть ли способ сделать это?
Пояснение: Реестр отслеживает классы, полученные из BaseClass. В какой-то момент кода я просматриваю все эти классы и создаю объекты. Это немного сложнее, потому что реестр тоже делает другие вещи, но это основная идея.
Просто небольшая точка, но то, что вы хотите, когда оценивается класс, не тогда, когда его объявили (объявленное только один раз, когда вы пишете Это). –
можете ли вы поделиться еще немного кода? что такое реестр, где он объявлен и что он делает? – timgeb
@Бурхан Халид - спасибо, я исправил формулировку. – zmbq