более неизменяемыми, и откладывать вычисление полей на время пока к ним не обратятся? Например что то типа этого.
class Test:
__test: str = None
def __init__(self, test:str):
self.__test = test
@property
def test(self):
if not self.__test:
self.__test = InitAnotherClass().some_logic()
return self.__test
Ленивая модель, чому б и нет. Зависит от того, насколько тяжело вычислять эти поля и насколько редко к ним обращаются.
Например довольно тяжело, в плане времени
Если у тебя нет гарантии, что в большинстве случаев к этим полям будут обращаться - имхо, вполне нормально сделать их ленивыми.
а если будут, таким образом мы разве не гарантируем только единственное вычисление этого поля?
В том варианте, который у тебя описан парой постов выше - гарантируем.
не забываем про потокобезопасность. если актуально
Что то не так с ней?
если два потока одновременно запросят проперти, у тебя будет два раза вычисление
двойное подчеркивание это не аналог private в других языках программирования
А, ты про это. Нет, тут потоки думаю не угрожают)
нет аналога. двойное подчеркивание нужно чтобы избегать конлфиктов при наследовании и только. есть конвенция использовать одинарное подчеркивание для имен, не являющихся частью публичного интерфейса.
Ну обращение к свойству класса усложняется, Поэтому вполне себе аналог
нет, это использование механизма языка не по назначению.
Как только язык предоставит мне адекватные приватные свойства и методы, я сразу же ими воспользуюсь. Я понял к чему ты сказал про наследование.
ну формально документация не запрещает так делать, но бессмысленно
ты выбрал не тот язык
есть такой язык: Java
Обсуждают сегодня