我有一个 Python 2.x module.py
文件,如下所示:
class A(object):
KEYWORD = 'Class A'
class B(A):
KEYWORD = 'Class B'
class C(object):
pass
def list_class_keywords():
for name in globals():
print name, hasattr(name, 'KEYWORD')
if __name__ == '__main__':
list_class_keywords()
在list_class_keywords()
中,我循环遍历该文件模块的所有对象并测试该对象是否具有属性KEYWORD
。显然它不起作用,因为 name
是一个字符串。我应该如何重写 list_classes
以获得我正在寻找的内容?
更新:感谢 Ignacio 的提示。这是更新后的代码:
def list_class_keywords():
global_dict = globals()
for name in global_dict:
obj = global_dict[name]
print name, hasattr(obj, 'KEYWORD')
最佳答案
globals()
是一个字典。将其编入索引。
但是您应该使用装饰器来枚举类。
关于Python:在单个模块文件中搜索全局类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5959332/