【发布时间】:2019-11-04 02:59:16
【问题描述】:
我正在寻找一种方法来可靠地获取具有__slots__ 的类的所有插槽名称的列表。示例:
class A:
__slots__ = ('a',)
print(list_slots(A)) # should output ['a']
当然,这可以通过list(A.__slots__) 完成,但不幸的是,有几件事让这变得更加困难:
-
继承的插槽:
class B(A): __slots__ = ('b',) print(list_slots(B)) # should output ['a', 'b'] -
字符串:
class C: __slots__ = 'xyz' print(list_slots(C)) # should output ['xyz'] -
迭代器:
class D: __slots__ = iter(['d']) print(list_slots(D)) # should output ['d']
如您所见,这里有很多陷阱...是否有list_slots 的实现可以正确处理所有这些情况?
【问题讨论】:
标签: python attributes slots