我有一个扩展 a 的小类namedtuple,但__dict__其实例的属性始终返回空。
Point = namedtuple('Point', 'x y')
p1 = Point(20, 15)
print(p1, p1.__dict__)
# Point(x=20, y=15) OrderedDict([('x', 20), ('y', 15)]) <--- ok
class SubPoint(Point): pass
p2 = SubPoint(20, 15)
print(p2, p2.__dict__)
# SubPoint(x=20, y=15) {} <--- why is it empty?
p2有属性,但它__dict__是空的。但是,它们用 正确列出dir(),这很奇怪。请注意,在SubPoint扩展 vanilla 类时可以正常工作。
发生了什么,如何列出子类实例中的属性?