如何在Python中对内置函数类进行子类化?

时间:2019-06-26 13:14:08

标签: python python-3.x

在python中,您可以通过属性将元数据添加到函数中,如Python data model中所述:

  

功能对象还支持获取和设置任意属性,这些属性可以用于例如将元数据附加到函数。

我有一个函数将另一个函数作为输入,希望它具有这样的元数据属性。使用类型Callable注释此功能时,我无法强制使用此属性。因此,我想做一个内置function类的子类,以确保元数据的存在,以便在类型注释中使用。

只有一个小问题:除了运行时,我找不到对该类的引用。例如,据我所知,builtins模块没有函数类。

1 个答案:

答案 0 :(得分:3)

无法在Python中继承the built-in function type

>>> class MyFunction(type(lambda: None)):
...     pass
...
TypeError: Error when calling the metaclass bases
    type 'function' is not an acceptable base type

请考虑使用可调用类:创建一个用户定义的类型,该类型记录所需的元数据属性并定义一个__call__方法。