繁体   English   中英

如何检查 python 类或对象是否是用户定义的(不是内置的)?

[英]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)

test.py

import foo foo.print_classes()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM