函数的签名(Function Signature)指的是函数的参数列表,包括参数的名称、默认值、类型注解,以及参数的调用方式(位置参数、关键字参数等)。它决定了如何调用该函数。在 Python 中,可以使用 inspect.signature() 来获取函数的签名。

类的签名(Class Signature)指的是类的构造函数(__init__ 方法)的参数列表,包括参数的名称、默认值、类型注解等信息。它决定了如何实例化该类。在 Python 中,可以使用 inspect.signature() 来获取类的签名,即 __init__ 方法的参数信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import inspect

class obj:
def __init__(self, a, b, c):
pass

def func(a, b, c):
pass

print(func.__code__.co_varnames)
# ('a', 'b', 'c')
print(obj.__init__.__code__.co_varnames)
# ('self', 'a', 'b', 'c')

signature = inspect.signature(func)
print(signature.parameters.keys())
# odict_keys(['a', 'b', 'c'])
signature = inspect.signature(obj)
print(signature.parameters.keys())
# odict_keys(['a', 'b', 'c'])