python类中的__attrName和attrName之间的区别?

时间:2018-11-02 02:33:08

标签: python

我试图了解python以下类的类属性__value和value之间的区别。

class WithClass ():
    def __init__(self, val = "Bob"):
        self.__value = val
    def my_func(self):
        print(self.value)
a = WithClass()
print(a.__value)
b = WithClass("Sally")
print(b.__value))

以上代码给出错误“ AttributeError:WithClass实例没有属性'__value'”。但是下面的代码不会给出任何错误。

class WithClass ():
    def __init__(self, val = "Bob"):
        self.value = val
    def my_func(self):
        print(self.value)
a = WithClass()
print(a.value)
b = WithClass("Sally")
print(b.value))

两个属性的声明之间有什么区别?任何了解Python中“ __”的重要性的资源将不胜感激。

1 个答案:

答案 0 :(得分:0)

在类变量前面添加两个下划线会执行“名称修改”,从而有效地使变量对外界具有私有性(因此,类外部代码对其进行更改并不容易)。可以在python documentation中查看有关它的更多信息。