Используйте __init_subclass__
. Вы не можете name
быть собственностью вообще, абстрактным или иным образом.
class Base:
def __init_subclass__(cls, *args, **kwargs):
super().__init_subclass__(**kwargs)
if not isinstance(cls.name, str):
raise TypeError(f'{cls.name} is not a string value')
class MyClass(Base):
name = 1