在 Objective-C 中,以下代码似乎设置myobj.x
为 3:
Foo *myobj = [[Foo alloc] init];
myobj.x = 3;
NSLog(@"%d", myobj.x);
但是,Foo 可能为 x 实现了一个 setter 函数,该函数会拦截此操作,例如将 x 设置为 4。从 x 中读取也是如此:看似只是读取 x 值的代码实际上可能正在访问 Foo 中的 getX 函数。
是否可以在 python 中做同样的事情?执行以下代码时:
myobj = Foo()
myobj.x = 3
print myobj.x
有什么方法可以将 myobj.x 实际上设置为 4?还是由于在 Foo 中实现了一个邪恶的 getter,打印语句是否可能显示 4?