python - 获取文件中所有用户定义的类

标签 python django

如果我有一个文件,例如 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/

相关文章:

python - pytesseract.TesseractError : (-5, 'dyld:库未加载:原因:未找到图像)

python - Bokeh DataTable Selection 时触发事件

python - SQLAlchemy:如何检测/抑制重复的 JOIN 子句?

css - 如何仅使用截断或 css 显示数字

Python:无法理解正则表达式

python - 如何在通用 View 中为同一请求使用不同的 Django Rest Framework 序列化程序?

python:如何从类变量访问class.__dict__?

python - 如何使用python检测Sentinel 2图像上的云和云阴影

Python:帮助解决UnboundLocalError:赋值前引用的局部变量

python - 获取模板中所有自定义用户的列表(Django)