gpt4 book ai didi

Python 内存分配,当使用绑定(bind)函数、静态函数或类函数时?

转载 作者:行者123 更新时间:2023-12-01 04:35:44 32 4
gpt4 key购买 nike

我对此很好奇:一旦创建一个包含这些函数中的每一个函数的类,Python 对象实际上会发生什么?

查看一些示例,我发现绑定(bind)函数、静态函数或类函数实际上正在创建一个类对象,该对象包含所有 3 个函数。

无论我调用哪个函数,这总是正确的吗?并且总是调用父对象类(在本例中为对象,但可以是我认为的任何内容),因为我的类中的构造函数正在隐式调用它?

class myclass(object):
a=1
b=True

def myfunct(self, b)
return (self.a + b)

@staticmethod
def staticfunct(b):
print b

@classmethod
classfunct(cls, b):
cls.a=b

因为不清楚:当我按如下方式使用它时,该对象类的生命周期是什么?

from mymodule import myclass

class1 = myclass()
class1.staticfunct(4)
class1.classfunct(3)
class1.myfunct

在静态情况下,myclass对象被分配,然后函数被运行,但类和绑定(bind)方法没有生成?

如果是类函数,和上面一样吗?

在绑定(bind)函数的情况下,类中的所有内容都已分配?

最佳答案

class 语句创建类。这是一个具有所有三个函数的对象,但第一个 (myfunct) 是未绑定(bind)的,如果没有此类的实例对象,则无法调用。

此类的实例(如果您创建它们)将具有此函数的绑定(bind)版本以及对静态函数和类函数的引用。

因此,类和实例都具有所有三个功能。

不过,这些函数都没有创建类对象。这是通过 class 语句完成的。 (准确地说:当解释器完成类创建时,即创建类内部的函数时,该类还不存在;令人难以置信,但很少需要知道。)

如果您不重写__init__()函数,它将被继承并为每个创建的实例调用,是的。

关于Python 内存分配,当使用绑定(bind)函数、静态函数或类函数时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756097/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com