Создание наследников класса с отличием в лике единственной переменной
Нужно создать много однотипных классов, в которых де факто отличается единственная переменная класса.
Помню, что делал реализация под такой вот синтаксис создания класса: class Token001(Token, "вот эта строчка в ту самую переменную"): pass, но, хоть убейте, не могу вспомнить реализацию этого через конструктор экземпляра __new__ или __init_subclass__. В основном попытки реализации через онные методы заканчиваются TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases. Туплю где то на ровном месте, но тут какие то горы :/
#class Token(object): ...
class Sign(object): #(Token):
keyword = None
def __init_subclass__(cls, keyword):
cls.keyword = keyword
class Sign001(Sign, "sign 001"): pass
class Sign002(Sign, "sign 002"): pass
#...
Traceback (most recent call last):
File "C:\Users\Shamus_Rezol\Desktop\dwe.py", line 11, in <module>
class Sign001(Sign, "sign 001"): pass
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
Через __new__ примерно тоже самое. Не понимаю, что не так то?
Да, можно вместо pass прописать keyword = .., но мне не эта реализация интересна.
Ответы (1 шт):
Позиционные аргументы используются для перечисления базовых классов, а ваш keyword должен быть именованным.
class Sign001(Sign, keyword="sign 001"): pass