如果我有一个文件,例如 first.py
,它看起来像这样 -
class Person(object):
pass
class Dog(object):
pass
我还有第二个文件,second.py
。
如何获取在 first.py
中定义的所有类在 second.py
中?
也许我应该提到,我尝试实现的用例与在 Django 中初始化模型时发生的用例类似 - 当我运行 manage.py sql myapp
命令时,我假设 Django 遍历了 models.py 中的所有模型并为它们生成 SQL 查询。
所以我想做的事情类似于 Django 在获取 models.py
中定义的所有模型时所做的事情。
如何从文件中获取所有用户定义的类? (除非有更聪明的方法来完成 Django 所做的事情)
提前致谢!
最佳答案
如果你有一个文件first.py,在second.py中,你必须编写以下代码来返回first.py中的所有用户定义的类:
import first
from types import *
userDefinedClasses = [i for i in dir(first) if type(getattr(first, i)) is TypeType]
在您的简单示例中,预定义first.py,dir(first)将返回列表['Dog', 'Person', '__builtins__', '__doc__', '__file__', '__name__' ,'__package__']
。要修剪它,您必须使用上面的压缩 for 循环来检查第一个目录中每个对象的类型。
这将首先返回类型为“type”的所有对象,这实际上是所有用户定义的类。
关于python - 获取文件中所有用户定义的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30833052/