考虑这个课程:
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__
魔法方法吗?我错过了什么吗?
答案 0 :(得分:3)
不确定。有人也可以这样做:
a._name = {'animal': 'tiger'}
或者,您知道,他们只能编辑您的源代码。
不要担心。
答案 1 :(得分:0)
Python不会为您在同一进程中运行的其他代码提供数据保护。没有私有属性,依此类推。 Python提供了可以用传统习惯方式使用的结构,但是没有任何语言能够保护你免受同事的伤害。