我有一个扩展 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 类时可以正常工作。
发生了什么,如何列出子类实例中的属性?