你正在考虑正确的方向,但你应该看着Python properties做你正在做的事情:
class Foo():
def __init__(self, x):
self.__x = x
@property
def x(self):
return self.__x
@x.setter
def set_x(self, value):
if(value < 0):
self.__x = value
Run Code Online (Sandbox Code Playgroud)
其中你可以嵌套"set"逻辑和"get"逻辑(如果你正在改变如何呈现它.)这使得调用x类中的值感觉就像访问属性一样.
foo = Foo(-4)
foo.x
>>> -4
foo.x = 3
foo.x
>>> -4
foo.x = -12
foo.x
>>> -12
Run Code Online (Sandbox Code Playgroud)