When I create a class with method like this:
class Foo:
""" A class """
def bar():
" Hello world "
pass
我希望
__doc__
返回方法的第一个语句,因为两者都是字符串。不幸的是,这并没有发生:print(Foo.__doc__)
print(Foo().__doc__)
print(Foo.bar.__doc__)
print(Foo().bar.__doc__)
输出 4 次的是 None
。这里的例子
https://docs.python.org/zh-cn/3.8/library/functools.html?highlight=__doc__#functools.wraps
看起来似乎有问题,因为对我来说文档字符串是 None
:
from functools import wraps
def my_decorator(f):
@wraps(f)
def wrapper(*args, **kwds):
print('Calling decorated function')
return f(*args, **kwds)
return wrapper
@my_decorator
def example():
"""Docstring"""
print('Called example function')
print(example.__doc__)
同时打印 None
。
为什么 __doc__
没有设置成指定的字符串?
ideone 代码片段: http://ideone.com/cZNUQe
sys.version == '3.4.3+ (default, Oct 14 2015, 16:03:50) \n[GCC 5.2.1 20151010]'
)。 - Herbert__doc__
为None
的行为,这发生在一些较少的最小示例(即客户生产代码)中。 - Herbert