>>> class Foo():
... Bar = namedtuple('Bar', ['x','y'])
... def baz(self):
... b = Foo.Bar(x=2, y=3)
... print(type(b))
...
>>> a = Foo()
>>> a.baz()
<class '__main__.Bar'>
问题在于,当namedtuple()
返回类型对象时,它不知道将其分配给类成员的事实- 因此,它告诉类型对象其类型名称应为__main__.Bar
,即使它确实应该为__main__.Foo.Bar
。