如何在Python中创建内置函数类的子类?

3
在Python中,您可以通过属性为函数添加元数据,如Python数据模型data model中所讨论的那样:
引用块中写道: 函数对象还支持获取和设置任意属性,例如,可以用来将元数据附加到函数上。
我有一个函数,它以另一个函数作为输入,期望该函数具有此类元数据属性可用。当使用类型“Callable”来注释此函数时,无法强制执行存在该属性。因此,我希望更改内置的“function”类的子类,以确保存在元数据,以便在类型注释中使用。
只有一个小问题:我找不到对这个类的引用,除了在运行时。例如,据我所见,“builtins”模块没有一个函数类。
1个回答

6
在Python中,无法对内置函数类型进行子类化。
>>> class MyFunction(type(lambda: None)):
...     pass
...
TypeError: Error when calling the metaclass bases
    type 'function' is not an acceptable base type

考虑使用可调用类代替:创建一个用户定义类型,记录预期元数据属性并定义一个__call__方法。

这就是我最终做的。 - Harald Husum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接