是否可以在python中创建一个与该类的成员变量名同名的属性。 e.g。
Class X:
...
self.i = 10 # marker
...
property(fget = get_i, fset = set_i)
请告诉我如何才能这样做。因为如果我这样做,对于标记处的语句,我会得到assingm的堆栈溢出
答案 0 :(得分:22)
是否可以在python中创建一个与成员变量名称相同的属性
没有。属性,成员和方法都共享相同的命名空间。
标记处的语句我得到堆栈溢出
显然。你试着设置i,它调用属性i的setter,它试图设置i,它调用属性i的setter ... ad stackoverflowum。
通常的模式是通过在前缀“_”前面使后端值成员通常不公开:
class X(object):
def get_i(self):
return self._i
def set_i(self, value):
self._i= value
i= property(get_i, set_i)
请注意,必须使用新式对象(子类'object')才能使'property'正常工作。