このようなクラスインスタンスを作成すると
class MyClass(object):
pass
x = MyClass()
次に、次のように x に属性を設定できます。
x.myAttr = 1
またx.__setattr__('myAttr', 1)
ただし、口述を行う場合
d = {}
属性を設定できません。たとえば、これを行うと
d.__setattr__('myAttr', 1)
「「dict」オブジェクトには属性「myAttr」がありません」というエラーが表示されます。試しても同じことが起こります
d.myAttr = 1
x.myAttr = 1 の場合、実際に何が起こるかということに気付きました
x.__dict__
新しいキーで更新されるため、その必要があります
d.__setattr__
d がないため機能しません
d.__dict__
単に dがdict だからです。誰かがここで何が起こっているのかを完全に説明できれば幸いです。
すべての python オブジェクトには があり.__dict__
ますか?
呼び出しを試みるとd.__setattr__
、属性が存在しないというエラーが発生するのはなぜですか?
知っておくべき組み込み型の特定の階層はありますか? 簡単な参考になれば幸いです。
パイソン2.6.4
Windows XP Pro x64 SP2