python私有(private)属性

标签 python

class A():

    def __init__(self):
        self.__var = 5

    def get_var(self):
        return self.__var

    def set_var(self, value):
        self.__var = value

    var = property(get_var, set_var)

a = A()
a.var = 10
print a.var == a._A__var

谁能解释为什么结果是False

最佳答案

property 装饰器只适用于新型类。在 Python 2.x 中,您必须扩展 object 类:

class A(object):

    def __init__(self):
        self.__var = 5

    def get_var(self):
        return self.__var

    def set_var(self, value):
        self.__var = value

    var = property(get_var, set_var)

没有新式类的行为,赋值 a.var = 10 只是将一个新值 (10) 绑定(bind)到一个新的成员属性 a.var.

关于python私有(private)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2903217/

相关文章:

python - Django Pandas AWS

Python - 从 html 文件中获取所有图像

python - Openpyxl - 我可以使用 Openpyxl 创建水平条形图吗?

python - OpenCV Crop Hough Circles Python无法正常工作

python - Python 中计算换行符的问题

python - 如果比较

python - 使用 linux 命令从宽格式转换为长格式

python - 使用python打开文件对象: readlines() and readline() does not return any value

python -c 与 python -<< heredoc

python - Django 2.0 和 DRF 3.7.7 路由器