Python属性和__dict__方法

时间:2013-01-15 05:28:10

标签: python

考虑这个课程:

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'和实例var。 'name'被重置。 例如。 a.__dict__['_name'] = {'animal' : 'tiger'}a.name产生了{'animal' : 'tiger'}

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

2 个答案:

答案 0 :(得分:3)

不确定。有人也可以这样做:

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

或者,您知道,他们只能编辑您的源代码。

不要担心。

答案 1 :(得分:0)

Python不会为您在同一进程中运行的其他代码提供数据保护。没有私有属性,依此类推。 Python提供了可以用传统习惯方式使用的结构,但是没有任何语言能够保护你免受同事的伤害。