在 python 中,您可以通过属性向函数添加元数据,如 Python数据模型中所述:
函数对象还支持获取和设置任意属性,例如,可以使用这些属性将元数据附加到函数。
我有一个函数将另一个函数作为输入,期望它具有这样的可用元数据属性。当使用类型Callable注释此函数时,我无法强制存在此属性。因此,我想创建一个内置类的子类function,以确保元数据的存在,以便我可以在类型注释中使用。
只有一个小问题:除了运行时之外,我找不到对该类的引用。例如,builtins据我所知,该模块没有函数类。
在 Python 中不可能对内置函数类型进行子类化。
>>> class MyFunction(type(lambda: None)):
... pass
...
TypeError: Error when calling the metaclass bases
type 'function' is not an acceptable base type
Run Code Online (Sandbox Code Playgroud)
考虑使用可调用类:创建一个用户定义的类型,该类型记录预期的元数据属性并定义一个__call__方法。