当对象内对象的属性更改时,我需要调用一个方法。所以我选择了物业,但没有成功。
我使用属性来检查对象内的对象是否正在更改。但这仅在我分配该类型的新对象或现有对象时才调用setter,而当我在其中更改属性时则不会。
class Position:
def __init__(self):
self.x = 0
self.y = 0
class Player:
def __init__(self, x, y):
self.__position = Position()
self.__position.x = x
self.__position.y = y
@property
def position(self):
return self.__position
@position.setter
def position(self, value):
print('Position changed')
self.__position = value
player = Player(5, 10)
player.position = Position() # Setter gets called
player.position.x = 10 # Setter doesn't get called
当前,该示例在player.position = Position()
行中一次打印“位置已更改”。但是当X或Y更改时,我需要打电话给二传手。
谢谢!
答案 0 :(得分:1)
问题:当X或Y更改时,我需要致电二传手。
如果您想了解情况,如果x
或y
被更改,请使用x.setter
和y.setter
。
例如:
@x.setter
def x(self, value):
print('Position X changed')
self.__position.x = value
用法:
player.x = 10