Why does a private attribute of python class allow me to assign a value?
本问题已经有最佳答案,请猛点这里访问。
我有一个具有私有属性的类
1 2 3 4 5 6 7 | 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访问private属性
1 2 3 4 5 6 | >>> 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' |
因为它是私有的,所以我不能访问它,但是当我试图分配一个值时,我可以访问它。
1 2 3 | >>> obj.__prv ="changed in subclass" >>> obj.say_it_aloud() i m private |
但是,类对象中的值没有更改。但是为什么我能分配它呢?它有任何用途吗?
您正在为为为该类创建的实例分配一个新属性。它不会更改uu prv属性的值。
1 | print DoGood._DoGood__prv # access a private attribute. |
仍会输出"我是私人的"