python - 如何子类化 Python 中的内置函数类?
问题描述
在 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
考虑改用可调用类:创建一个用户定义的类型,该类型记录预期的元数据属性并定义一个__call__
方法。
推荐阅读
- html - 事务性电子邮件 - Magento 1.9 中的默认样式和变量
- google-apps-script - 在包含字符串的单元格中的每个字符之后插入一个字符串
- sql - 访问 SQL 交叉表函数 SELECT TOP 1
- c - 二进制文件的打印名称
- security - 是否可以停止复制 docker 图像?
- typescript - 如果单击 ngx typeahead 结果,则停止 formGroup valueChanges observable
- python - TypeError:“int”对象没有属性“__getitem__”(简单问题)
- mysql - EMQTT - emq_plugin_template POST to API (SQL) 问题仅适用于网关客户端
- dart - 如何在 InkResponse 小部件中更改 highlightShape 大小
- mongodb - PySpark MongoDB :: java.lang.NoClassDefFoundError: com/mongodb/client/model/Collation