I have:
class MyClass:
my_var: Optional[str] = None
@classmethod
def get_my_var(cls) -> str:
""" Sets cls.my_var if it's not set before """
my_var = cls.my_var
if my_var is not None:
return my_var
my_var = cls.some_func()
cls.my_var = my_var
return my_var
This reason I do this, instead of setting my_var in self.__init__() is because MyClass is often used without an instance, e.g.: MyClass.my_var and the callers expect my_var to have a default value from cls.some_func()
How can I achieve this in python 3.8+? Can I do a @property decorator here? Can I force MyClass to assign my_var a value from cls.some_func()?