-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'、、、およびインスタンス var. 「名前」がリセットされました。例えば。a.__dict__['_name'] = {'animal' : 'tiger'}a.nameなりました{'animal' : 'tiger'}

__dict__その特定のオブジェクトの魔法のメソッドにアクセスするだけで、誰かが同じ/類似のものを使用してインスタンス変数の値を何かに壊すことができるのではないかと思っていましたか? ここで何か不足していますか?

4

2 に答える 2

3

もちろん。誰かがこれを行うこともできます:

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

または、あなたのソース コードを編集することもできます。

ご心配なく。

于 2013-01-15T05:38:24.617 に答える
0

Python は、同じプロセスで実行されている他のコードからデータを保護しません。プライベート属性などはありません。Python は、従来の慣用的な方法で使用できる構造を提供しますが、同僚からあなたを守るために言語ができることは何もありません。

于 2013-01-15T13:51:32.630 に答える