python - 类成员函数
问题描述
假设我有一个类,有一个不经常使用的成员函数,但它的定义很长
class foo:
# ...
fn():
print('This function is called rarely but its definition is quite lengthy')
# ...
在 may 程序中的某个时刻,我想创建数百万个 foo 类的实例,并且我希望它占用尽可能少的内存空间。冗长的函数 fn 是否也以某种方式复制了一百万次?在这种情况下,最好定义一个我将实例作为输入的外部函数。如果它没有被复制一百万次,我宁愿将其保留为成员函数。
解决方案
实例方法实际上是类的成员。当 Python 解释器看到类似 的结构obj.method(params, ...)
时,它(或多或少)将其翻译为(obj.__class__).method(obj, params, ...)
. 它在类中查找一个method
成员,obj
并在添加(引用)对象本身之后调用它。
TL/DR:方法不会复制到实例对象中,因此您可以安全地将冗长的函数用作方法。
推荐阅读
- php - 在 laravel 外使用照明/分页
- python - 在项目期间在 CSV 中标记我的位置
- php - 如何从“坐标”中获取信息并将其保存在 PHP 变量中?
- python - Python 停止在 Jupyter StartUp 上工作
- c++builder - 在 32 位 C++ 构建器应用程序上找不到入口点
- gnome - 如何处理 gnome 扩展中的麦克风声级更新事件?
- c++ - 从自己的专业化继承的模板 - 用例?限制?
- node.js - Socket.io 客户端无法验证最新的letsencrypt 证书
- java - Spring Cloud Client 未从 Spring Cloud 服务器获取配置
- amazon-web-services - Cloudformation 中的 VPC 端点 - 端点类型(网关)与可用服务类型不匹配([接口])