我在该模块中动态创建一个动态创建的类的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
答案 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)