Protocol类中没有值的静态成员列表



本例只打印STATIC_MEMBER_1。没有列出STATIC_MEMBER_2。我想要一种同时列出它们的方法。

class Foo(Protocol):
MY_STATIC_MEMBER_1: int = 42
MY_STATIC_MEMBER_2: int
print(dir(Foo))

我试过使用inspect__mro__,但我不能让它列出STATIC_MEMBER_2

vars内置函数做你需要的我猜https://docs.python.org/3/library/functions.html#vars顺便说一句。你的成员不是静态的,它是一个类变量,有点相同…但细节不同

vars(Foo)
mappingproxy({'__module__': '__main__', '__annotations__': {'MY_STATIC_MEMBER_1': <class 'int'>, 'MY_STATIC_MEMBER_2': <class 'int'>}, 'MY_STATIC_MEMBER_1': 42, '__dict__': <attribute '__dict__' of 'Foo' objects>, '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': None, '__parameters__': (), '_is_protocol': True, '__subclasshook__': <function Protocol.__init_subclass__.<locals>._proto_hook at 0x7f7db7b9f1a0>, '__init__': <function _no_init_or_replace_init at 0x7f7db77dd4e0>, '__abstractmethods__': frozenset(), '_abc_impl': <_abc._abc_data object at 0x7f7db77ed4c0>})

最新更新