Переопределить значение ключа, которое передается метаклассу базового класса его дочерним классом. ⇐ Python
-
Anonymous
Переопределить значение ключа, которое передается метаклассу базового класса его дочерним классом.
Когда я наследую BaseClass от ChildClass, BaseMetaClass.__new__(...) запускается дважды. Сначала с ключевым словом arg «foo», а второй раз с «bar». Можно ли переопределить «foo» с помощью «bar» до того, как оно будет выполнено. Меня не волнует, если он запускается дважды, но при первом выполнении он должен иметь значение «бар».
класс BaseMetaClass(тип): def __new__(cls, name, bases, attrs, *args, **kwargs): # здесь делаем что-нибудь с атрибутами return super().__new__(cls, name, bases, attrs) класс BaseClass(keywordarg="foo", метакласс=BaseMetaClass): проходить класс ChildClass(BaseClass, ключевое словоarg="bar"): проходить Почему я это пытаюсь сделать:
Я пробую это, потому что пытаюсь понять, как переопределить декоратор, который регистрирует службу, или манипулировать им.
Что я пробовал дополнительно
Я уже пробовал __prepare__, но это не привело к тому результату, на который я надеялся.
Я также попробовал следовать синтаксису, который кажется неверным
class ChildClass(BaseClass(keywordarg="bar)):
Когда я наследую BaseClass от ChildClass, BaseMetaClass.__new__(...) запускается дважды. Сначала с ключевым словом arg «foo», а второй раз с «bar». Можно ли переопределить «foo» с помощью «bar» до того, как оно будет выполнено. Меня не волнует, если он запускается дважды, но при первом выполнении он должен иметь значение «бар».
класс BaseMetaClass(тип): def __new__(cls, name, bases, attrs, *args, **kwargs): # здесь делаем что-нибудь с атрибутами return super().__new__(cls, name, bases, attrs) класс BaseClass(keywordarg="foo", метакласс=BaseMetaClass): проходить класс ChildClass(BaseClass, ключевое словоarg="bar"): проходить Почему я это пытаюсь сделать:
Я пробую это, потому что пытаюсь понять, как переопределить декоратор, который регистрирует службу, или манипулировать им.
Что я пробовал дополнительно
Я уже пробовал __prepare__, но это не привело к тому результату, на который я надеялся.
Я также попробовал следовать синтаксису, который кажется неверным
class ChildClass(BaseClass(keywordarg="bar)):