-1

考虑这个类:

class A(object):
    def __init__(self, name = 'hi'):
        self._name = name
    def getname(self):
        return self._name
    def setname(self, value):
        self._name = value
    name =  property(getname, setname)
a = A('hello')

a.name 会给我“你好”

但是,我注意到,a.__dict__['name'] = 'something'和实例变量。“名称”已重置。例如。a.__dict__['_name'] = {'animal' : 'tiger'}a.name导致{'animal' : 'tiger'}.

我想知道任何人都可以使用相同/相似的东西来破坏实例变量的值,只需访问该__dict__特定对象的魔术方法吗?我在这里错过了什么吗?

4

2 回答 2

3

Sure. Someone could also do this:

a._name = {'animal': 'tiger'}

Or, you know, they could just edit your source code.

Don't worry about it.

于 2013-01-15T05:38:24.617 回答
0

Python 不保护您的数据免受在同一进程中运行的其他代码的影响。没有私有属性,等等。Python 提供了您可以以传统惯用方式使用的结构,但没有任何语言可以保护您免受同事的伤害。

于 2013-01-15T13:51:32.630 回答