python - 类成员函数

标签 python class memory

假设我有一些类,其中有一个不经常使用的成员函数,但其​​定义相当长

class foo:
    # ...
    fn():
        print('This function is called rarely but its definition is quite lengthy')
    # ...

在可能的程序中的某个时刻,我想创建数百万个 foo 类的实例,并且我希望它占用尽可能少的内存空间。冗长的函数 fn 是否也被复制了一百万次?在这种情况下,最好定义一个外部函数,我将其实例作为输入。如果它没有被复制一百万次,我宁愿将它保留为成员函数。

最佳答案

实例方法实际上是类的成员。当 Python 解释器看到像 obj.method(params, ...) 这样的构造时,它(或多或少)将其翻译为 (obj.__class__).method(obj, params, ...)。它在 obj 类中查找 method 成员,并在添加(引用)对象本身后调用它。

TL/DR:方法不会复制到实例对象中,因此您可以安全地将冗长的函数保留为方法。

关于python - 类成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55138662/

相关文章:

python - 使用导入模块进行多处理

python - 如何在 python 中使用 json 将包含用户定义类的字典转储为值?

java - 关于 Java 类的示例考试

ios - ARC,值得与否?

c - 瓦尔格林 |大小为 8 的无效读取 |地址 0x7a41270 在大小为 4 的 block 内是 0 个字节,已分配

Python - 如何构建和访问大量数据而不用尽内存或减慢处理速度

python - 在给定的 conda 环境中执行 python 脚本的最佳方式

python - 将 DataFrame 导出和导入到 Access 文件 (.mdb)

python - 如何在多个子类中使用父类对象以在python中的子类中使用父类对象中的所有设置变量

python - 没有 "verbose"参数的 sklearn 模型的进度条