【问题标题】:How do I get the source for a Python class I declared programmatically?如何获取我以编程方式声明的 Python 类的源代码?
【发布时间】:2023-04-02 02:20:01
【问题描述】:

我正在尝试使用inspect.getsource() 来获取这样定义的类的源代码:

import inspect

Cat = type('Cat', (), {})

def meow_local(self):
  print("meow")

Cat.meow = meow_local

print(inspect.getsource(Cat))

我从检查中得到的错误是:

OSError: 找不到类定义

inspect 不知道找到 Cat 类的正确位置是可以理解的。我应该告诉inspect去哪里看?

或者有其他方法可以获得相同的结果吗?

【问题讨论】:

  • 不确定,但我认为要输入的第二个参数应该是 (object,)
  • 确保您也将文件保存为 python 文件。不能解决问题,但有帮助。
  • @stefan type() with 3 params 返回一个新类型并期望 1. 名称 2. 基类元组 3. 属性字典

标签:
python
python-3.x
reflection
metaprogramming
metaclass