Tôi đang cố gắng triển khai thuộc tính lười biếng. Say, một đối tượng là khởi tạo bởi object._x = None
, và sau đó tôi muốn viết một cái gì đópython: câu lệnh có thể là biểu thức bên trong?
@property
def x(self):
return self._x or (init_x_value(); x)
để initializer được gọi là chỉ lần đầu tiên các thuộc tính được nhìn lên.
Trong scala, một biểu thức có thể chứa câu lệnh. Là một cái gì đó tương tự có thể trong python. Nếu không, có cách nào khác để thực hiện nó hay tôi nên gắn bó với if-else
?
'init_x_value' trả về' None' phải không? –
Theo như tôi biết điều này không thể được thực hiện, đó là một trong những lý do 'lambda' rất hạn chế trong Python. – melpomene
@WillemVanOnsem: có thể, chỉ tính giá trị '_x' và lưu nó vào đối tượng –