Код: Выделить всё
class Foo:
_UPDATED_AT: datetime = datetime.datetime(2000, 1, 1)
STATUS: bool = False
@classmethod
def bar(cls):
# updated the class variable from here only based on some condition
if some_cond:
cls.STATUS = True
cls.UPDATED_AT = datetime.datetime.now()
return cls.STATUS
Мне удалось достичь первого из двух требований, используя метакласс a, который по сути блокирует настройку атрибутов
Код: Выделить всё
class MyMeta(type):
def __setattr__(cls, key, value):
raise AttributeError(f"Can't set {cls}.{key}")
Я знаю, что мы можем пометить переменные как частные в Python с помощью ведущего подчеркивания (у меня уже есть такое в моем классе), которое может сообщить потребителям вашего кода, что эти переменные предназначены для внутреннего использования и не должны использоваться непосредственно потребителем.
Это как-то достижимо?
Подробнее здесь: https://stackoverflow.com/questions/785 ... -the-class
Мобильная версия