Python 我想打印';eee fff{';e';&&&';eee';';f';';fff';&#;,我怎样才能得到它。(关于_usetattr_;)

Python 我想打印';eee fff{';e';&&&';eee';';f';';fff';&#;,我怎样才能得到它。(关于_usetattr_;),python,Python,下面是我的代码: class a: w={} def __setattr__(self,name,value): self.w[name]=value def __getattr__(self,name): return self.w[name] b=a() b.e='eee' b['f']='fff' print b.e,b['f'],b.w #error b.e和b['f']之间的区别是什么。 谢谢set/getitem\uuuuu

下面是我的代码:

class a:
    w={}
    def __setattr__(self,name,value):
        self.w[name]=value
    def __getattr__(self,name):
        return self.w[name]

b=a()
b.e='eee'
b['f']='fff'
print b.e,b['f'],b.w
#error
b.e和b['f']之间的区别是什么。 谢谢

set/getitem\uuuuuuuu()用于索引。还要定义它们

class MyClass(object):
    def __init__(self):
        self.w = {}

    def __setitem__(self, k, v):
        self.w[k] = v

    def __getitem__(self, k):
        return self.w[k]


mc = MyClass()
mc['aa'] = 12
print mc['aa']

setitem/getitem用于索引访问(带方括号),如上图所示。setattr/getattr用于属性访问(即mc.aa)

您尚未定义任何名为
self.e的方法/属性


相反,如果你说
self.w[e]=“eee”
,那么你的错误应该消失。

还要观察当你有一个
a
的多个实例时会发生什么。