类成员函数

2024-09-30 05:31:35 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个类,它有一个成员函数,不经常使用,但是它的定义很长

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

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


Tags: 实例函数定义fooisfunction成员this
2条回答

在类级别声明的方法在所有实例之间共享,就像类变量一样,因此当实例化更多实例时,您不必担心方法占用更多内存

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

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

相关问题 更多 >

    热门问题