在Python中,是否可以訪問其設置器中的類變量的當前值?訪問setter中屬性的當前值
例如:
# Getter
@property
# ...
# Setter
@position.setter
def position(self, value):
# Do something with current value...
# self.position, self.__position, position and __position don't seem to work
# Update position with the given value
self.__position = value
# Do something with the new value...
C#中的等價物是:
private Position position;
public Position Position
{
get
{
// ...
}
set
{
// Do something with the current value...
// Update position field with given object
position = value;
// Do something with the new value...
}
}
更新
這裏是一個最小的,完整的和可驗證的例子來更好地說明我的問題:
class C:
def __init__(self):
self.x = 2
@property
def x(self):
return self.__x
@x.setter
def x(self, value):
print(self.x)
self.__x = value
print(self.x)
c = C()
以下引發錯誤:
AttributeError: 'C' object has no attribute '_C__x'
這是因爲設定器試圖更新它之前打印該變量的當前值,並且當x
被設置爲2的內部__init__
設定器運行時,在該點x
具有之前未分配一個值(沒有當前值可打印)。
怎麼辦你的意思是*「似乎沒有工作」*?在你分配給它之前,'self .__ position'仍然是舊值,因此'self.position'也將訪問舊值。 – jonrsharpe
這就是我在想的,但試圖在setter中訪問'self.position'或'self .__ position'都會導致以下錯誤:'AttributeError:'GameObject'對象沒有屬性'_GameObject__position''。 ('GameObject'是包含'position'變量的類。) – Ruben9922
請給出[mcve]。另外考慮拋開'__double_underscore',因爲名字混亂不必要地使事情複雜化。 – jonrsharpe