为什么python类的私有属性允许我赋值?

时间:2014-02-05 07:15:25

标签: python

我有一个私有属性

的类
class DoGood():
     __prv = "i m private"
     def __init__(self):
         self.default_string = self.__prv

     def say_it_aloud(self):
         print self.default_string

我试图从python-cli

访问私有属性
>>> from sample import DoGood
>>> obj = DoGood()
>>> obj.__prv
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: DoGood instance has no attribute '__pro'

由于私有我无法访问但是当我尝试分配一个我能够做到的值时

>>> obj.__prv = "changed in subclass"
>>> obj.say_it_aloud()
i m private

但是类对象内的值没有改变。但是为什么我能够分配它,它是否可以用于任何目的

1 个答案:

答案 0 :(得分:2)

您正在为您为该类创建的实例分配新属性。它不会更改__prv属性的值。

print DoGood._DoGood__prv # access a private attribute.

仍将输出“我是私人”