Код: Выделить всё
class Meta(type):
def __new__(cls, name, base, attrs):
attrs.update({'name': '', 'email': ''})
return super().__new__(cls, name, base, attrs)
def __init__(cls, name, base, attrs):
super().__init__(name, base, attrs)
cls.__init__ = Meta.func
def func(self, *args, **kwargs):
setattr(self, 'LOCAL', True)
class Man(metaclass=Meta):
login = 'user'
psw = '12345'
Если кто-то захочет изменить имя метакласса, он перестанет работать. Потому что нужно будет внести изменения внутри этого метакласса. Потому что я явно указал его название в коде. Я думаю, что это неправильно. Но я не знаю, как это выразить по-другому.
Я пробовал cls.__init__ = cls.func, но он не создает локальные переменные для класса Man объект. cls относится к создаваемому классу(
Код: Выделить всё
Man
Подробнее здесь: https://stackoverflow.com/questions/782 ... g-its-name