[英]How to check if a python class or object is user defined (not a builtin)?
我需要检查一个 python 模块来查找简单数据以及“用户定义的对象”。 在这里,我指的对象(或函数或类)不是内置的,而是用 class/def 语句定义或动态加载/生成的。
请注意,有类似的问题,但他们询问“新样式用户定义的类”。 我已经看过inspect
模块 - 我看不出它有什么帮助。
我可以导入一个模块并“遍历”它,但我不知道一种将属性识别为简单类型的简单方法。 例如 - 我怎么知道 0. 是内置类型? 这里:
>>> a=0.
>>> dir(a)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__'...
>>> type(a)
<class 'float'>
我是否必须知道所有标准对象的类才能确定模块/对象的属性是否是“用户定义的”?
尝试检查 types 模块是否是内置的,通常对我有用。
例如:
a = 1.2
type(a).__module__ == "__builtin__"
您可以在列表中添加要了解类的所有模块:
导入系统
class Foo(object):传递
def print_classes():current_module = sys.modules [ name ,modules1,module2 .......],用于dir(current_module)中的键:if isinstance(getattr(current_module,key),type):print(key)
import foo foo.print_classes()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.