Sha*_* M. 3 reflection runtime namedtuple python-3.x
如何动态创建命名元组的实例?是否可以?
Msg = collections.namedtuple('Msg', 'a b c')
...
mymsg = Msg(a=1,b=2,c=3)
msg_as_dict = mymsg._asdict()
msg_as_dict['recover_name'] = type(mymsg).__name__
Run Code Online (Sandbox Code Playgroud)
如何从msg['recover_name']
运行时创建 Msg 实例?
更新:如何在运行时获取 namedtuple 的类型?意思是,从存在实例中获取“消息”。
这将无需反射即可工作:
def test_tuple_builder(self):
from collections import namedtuple
name = "Foo"
attribs = "bar baz goo tar taz"
values = [100, "Hello", -1, "World", "1968"]
tpl_cls = namedtuple(name, attribs)
foo = tpl_cls(*values)
self.assertEqual(values[0], foo.bar)
self.assertEqual(values[1], foo.baz)
self.assertEqual(values[2], foo.goo)
self.assertEqual(values[3], foo.tar)
self.assertEqual(values[4], foo.taz)
print("We always use '{baz}, {tar}' as an example.".format(baz=foo.baz, tar=foo.tar))
Run Code Online (Sandbox Code Playgroud)
所有测试都通过,输出:
我们总是以“Hello, World”为例。
归档时间: |
|
查看次数: |
1542 次 |
最近记录: |