Skip to main content
 首页 » 编程设计

python之如何从包含类定义的 .py 文件中获取属性名称

2025年05月04日17EasonJim

我得到的输入文件只包含一个类定义(类只是常量容器,包含 json 的键,类似的文件在 Java 客户端上用于解码 json)看起来像:

class Constants(object): 
 
    VERSION= 'version' 
    OS = 'os' 
    PROGRAM = 'program' 
    # more constants ..... 

如何获取常量中定义的所有属性的字典,如何将文件解析为字典? 我想压缩 key 并生成具有相同常量 key 但更短 key 的新 .py 和 .java 文件。

请您参考如下方法:

  1. 导入模块
    • 我用了imp.load_module在以下代码中代替 __import__ 来导入任意文件路径。
  2. 找到类对象。
  3. 使用 vars 迭代类属性:

import imp 
path = '/path/to/file' 
with open(path, 'U') as f: 
    mod = imp.load_module('temporary', f, path, ('.py', 'U', imp.PY_SOURCE)) 
 
builtins = vars(__builtins__) 
cls = next(value for name, value in vars(mod).items() if name not in builtins) 
const_dict = {name: value for name, value in vars(mod.Constants).items() 
                          if not name.startswith('_')} 
print(const_dict) 
 
# => {'OS': 'os', 'VERSION': 'version', 'PROGRAM': 'program'} 

在 Python 2.7.6、3.3.2、3.4.0b2 上测试。