如何让python帮助系统在动态创建的模块中显示动态创建的类?

时间:2013-04-19 16:17:33

标签: python python-2.7 documentation

我在该模块中动态创建一个动态创建的类的python模块。但是,在python中使用帮助函数时,不会出现类。以下是该问题的一个示例。

import imp
Foo = imp.new_module("Foo")
Foo.Bar = type('Bar', (object,), dict(x=10, y=20))
help(Foo)

这显示以下内容。

Help on module Foo:

NAME
    Foo

FILE
    (built-in)

我希望Bar出现在 CLASSES 部分。我该怎么做?

请注意,help(Foo.Bar)将该类描述为in module __main__。这是一个线索吗?

Help on class Bar in module __main__:

class Bar(__builtin__.object)
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |  
 |  x = 10
 |  
 |  y = 20

2 个答案:

答案 0 :(得分:2)

设置__module__的{​​{1}}:

Bar

它会出现。 Foo.Bar.__module__ = Foo.__name__ 根据help()属性过滤掉模块的所有内容。其余的假设是外部进口。

答案 1 :(得分:1)

如果您将Foo.__all__设置为包含'Bar',则Bar部分会列出CLASSES

import imp
Foo = imp.new_module('Foo')
Foo.Bar = type('Bar', (object,), dict(x=10, y=20))
Foo.__all__ = ['Bar']
help(Foo)