简介
inspect.signature()函数使用这两个属性来检索有关函数或方法的调用签名的元数据。
实际应用
手动指定这些属性的一个用例是为使用*args
的函数提供有用的工具提示。
在此示例中,randrange()方法使用*args
接受可变数量的输入。但是,我们希望help()和工具提示提供的签名显示每个参数的含义,以便与相应的range()函数匹配。
import random
class Random(random.Random):
def randrange(self, /, *args):
'Choose a random value from range(start[, stop[, step]]).'
return self.choice(range(*args))
randrange.__text_signature__ = '($self, start, stop=None, step=1, /)'
__text_signature__
属性用于创建 Signature 对象:
>>> inspect.signature(Random.randrange)
<Signature (self, start, stop=None, step=1, /)>
这样可以使help()的输出更加有用:
>>> help(Random.randrange)
Help on function randrange in module __main__:
randrange(self, start, stop=None, step=1, /)
Choose a random value from range(start[, stop[, step]]).