我试图了解当使用help函数查询在我的代码中创建的对象时如何获得有用的结果。我为不同的班级的不同行为感到困惑。
Cls1 = type( 'FirstClass', (str,), {'__doc__':'My new class'})
inst1 = Cls1('Hello World')
Cls2 = type( 'SecondClass', (object,), {'__doc__':'My second new class'})
inst2 = Cls2( )
[help(inst1)
产生No Python documentation found for 'Hello World'
,而help(inst2)
产生:
Help on SecondClass in module __main__ object:
class SecondClass(builtins.object)
| My second new class
|
...
我想基于str
创建一个类,并能够通过help
函数显示有用的消息:是否有实现此目的的简单方法?
如果要创建str
的子类并使用内置的help
显示提示,则可以使用文档字符串。例如以下子类
class NewString(str):
"""This is a brand new implementation of string type"""
def test_method(self):
"""This is a test method in the new implementation"""
pass
在help(NewString)
上具有以下输出
class NewString(builtins.str)
| This is a brand new implementation of string type
|
| Method resolution order:
| NewString
| builtins.str
| builtins.object
|
| Methods defined here:
|
| test_method(self)
| This is a test method in the new implementation
...
但是对于字符串的所有实例,help
方法将无用。
失败的原因是,将str
传递给内置help
时,它将被视为函数的名称,并且显然没有名为Hello World
的函数会显示错误。
运行以下help('help')
将输出:
Help on _Helper in module _sitebuiltins object:
help = class _Helper(builtins.object)
| Define the builtin 'help'.
|
| This is a wrapper around pydoc.help that provides a helpful message
| when 'help' is typed at the Python interactive prompt.
|
| Calling help() at the Python prompt starts an interactive help session.
| Calling help(thing) prints help for the python object 'thing'.
...
这是help
的帮助。