使用与类成员名称相同的名称创建python属性

使用与类成员名称相同的名称创建python属性,python,Python,在python中是否可以创建与类的成员变量名同名的属性。e、 g Class X: ... self.i = 10 # marker ... property(fget = get_i, fset = set_i) 请告诉我怎么做。因为如果我这样做,对于marker处的语句,我会得到assingm的堆栈溢出 在python中是否可以创建与成员变量名同名的属性 否。属性、成员和方法都共享相同的命名空间 标记处的语句我得到堆栈溢出 很明显。您尝试设置i,它调用属性i

在python中是否可以创建与类的成员变量名同名的属性。e、 g

Class X:
    ...
    self.i = 10 # marker
    ...
    property(fget = get_i, fset = set_i)
请告诉我怎么做。因为如果我这样做,对于marker处的语句,我会得到assingm的堆栈溢出

在python中是否可以创建与成员变量名同名的属性

否。属性、成员和方法都共享相同的命名空间

标记处的语句我得到堆栈溢出

很明显。您尝试设置i,它调用属性i的setter,它尝试设置i,它调用属性i的setter。。。漫溢的广告

通常的模式是通过在后端值成员的前面加上“\”,使其成为非公共成员:

class X(object):
    def get_i(self):
        return self._i
    def set_i(self, value):
        self._i= value
    i= property(get_i, set_i)

注意:必须使用新样式的对象(“对象”子类)才能使“属性”正常工作。

-1:忘记引用文档: