0

我正在动态创建一个 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
4

2 回答 2

2

设置:__module___Bar

Foo.Bar.__module__ = Foo.__name__

它会出现。根据属性help()过滤掉属于模块的所有内容。.__module__其余部分假定为外部进口。

于 2013-04-19T16:21:53.397 回答
1

如果您设置Foo.__all__为 include '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)
于 2013-04-19T16:29:05.483 回答