python - 创建一个与类成员名称同名的python属性

标签 python

在python中是否可以创建一个与类的成员变量名同名的属性。例如

Class X:
    ...
    self.i = 10 # marker
    ...
    property(fget = get_i, fset = set_i)

请告诉我该怎么做。因为如果我这样做,对于标记处的语句,我会得到 assingm 的堆栈溢出

最佳答案

Is it possible in python to create a property with the same name as the member variable name

没有。属性、成员和方法都共享同一个命名空间。

the statement at marker I get stack overflow

很明显。您尝试设置 i,它调用属性 i 的 setter ,它尝试设置 i,它调用属性 i 的 setter ...广告 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”正常工作。

关于python - 创建一个与类成员名称同名的python属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/594856/

相关文章:

python - 如何使用python和ndb模型循环以下数据存储数据并返回到json.dumps?

python - 如何使用 OpenCV (Python) 捕获视频流

python - id()在Python中的使用

python - `TfidfVectorizer` 以什么方式处理个位数?

python - sympy 访问和使用求解器数据

python - 我有一组不等长的列表,计算每个列表长度的最快方法是什么

Python:使用列表理解通过子字符串列表过滤列表

mysql 请求中的 Python 变量

python - 使用 scipy 确定 "bottleneck"图像区域

python - opencv:在 mac 上的 python import cv2 期间出现段错误