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

时间:2017-10-22 16:26:55

标签: python types module

我需要检查python模块以查找简单数据以及"用户定义的对象"。这里,我指的是非内置的对象(或函数或类),但是使用class / def语句定义或动态加载/生成。

请注意,有类似的问题,但他们询问"新风格用户定义的类"。我已经看过inspect模块 - 我无法看到它如何起作用。

我可以导入一个模块,然后“走”'它,但我不知道将属性识别为简单类型的简单方法。例如 - 我怎么告诉0.是内置类型?这里:

>>> a=0.
>>> dir(a)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__'...
>>> type(a)
<class 'float'>

我是否必须知道所有标准对象的类,以确定模块/对象的属性是否为用户定义&#34;?

2 个答案:

答案 0 :(得分:3)

尝试检查类型模块是否内置,通常适用于我。

例如:

a = 1.2
type(a).__module__ == "__builtin__"

答案 1 :(得分:0)

您可以在列表中添加您想要了解的所有模块:

导入sys

类Foo(对象):     通

def print_classes():     current_module = sys.modules [名称,modules1,module2 .......]     对于dir中的键(current_module):         if isinstance(getattr(current_module,key),type):             打印(标号)

test.py

导入foo foo.print_classes()