以下代码
def _say(x): return x
class newObject(object):
def __init__(self, **kw):
for x in kw:
self.x = kw[x]
for i in self.x:
a = self.x[i]
eval('self.x.{u}={t}'.format(u=i, t=a)) #on another note, why would setattr(self.x, i, a) not work
self.object_ret()
def object_ret(self):
return self
data = newObject(**{
'ranks':{
'one':['yhggti','aragos','raithinki'],
'two':['grythin','radios'],
'three':['riyoken','schrodinger']},
'nicknames':{
'riyoken':['theos','arahiron'],
'illogic':['harab','thing']},
'commands':{
'say':_say},
})
概述如何将其他属性添加到另一个属性末尾的对象。我以前喜欢这样
^{pr2}$在哪里数据.昵称会回来的
>>> data.nicknames
{'illogic': ['harab', 'thing'], 'riyoken': ['theos', 'arahiron']}
现在我想打电话给你data.昵称.riyoken并返回['theos', 'arahiron']
,这将不适用于原始设置,因此是代码的顶部部分。但是eval('self.x.{u}={t}'.format(u=i, t=a))
部分出错并给出了诸如
File "<string>", line 1
self.x.say=<function _say at 0x030E9420>
^
SyntaxError: invalid syntax
如果有什么办法可以让这个工作在我可以打电话的地方data.昵称.riyoken或者data.commands.say我们将不胜感激。在
你把一些事情弄混了。下面是一个与您的代码非常接近的工作版本:
我会怎么做:
^{pr2}$这将处理任意嵌套的dict。在
为什么不在初始化类时将数据作为参数传递给它呢?所以让全班同学以字典为论据。我不确定我是否遗漏了什么。在
相关问题 更多 >
编程相关推荐