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
的多个实例时会发生什么。