Próbuję zaimplementować leniwą właściwość. Powiedzmy, obiekt jest zainicjowana przez object._x = None
, a następnie chcę napisać cośpython: wyrażenie może być wyrażeniem wewnętrznym?
@property
def x(self):
return self._x or (init_x_value(); x)
tak, że inicjator nazywa się tylko za pierwszym razem atrybut jest wzrok.
W scala wyrażenie może zawierać instrukcje. Czy coś podobnego jest możliwe w python. Jeśli nie, czy jest jakiś inny sposób na jego wdrożenie, czy powinienem pozostawać z if-else
?
'init_x_value' zwraca' None' prawo? –
O ile mi wiadomo, nie można tego zrobić, co jest jednym z powodów, dla których "lambda" jest tak ograniczona w Pythonie. – melpomene
@WillemVanOnsem: może, po prostu obliczyć wartość '_x' i zapisać ją w obiekcie –