gpt4 book ai didi

Python "self"约定 __init__ vs 方法

转载 作者:太空狗 更新时间:2023-10-29 21:19:01 25 4
gpt4 key购买 nike

class MyClass(object):
def __init__(self):
self.var = "hi"

def some_method(self):
print self.var

#for the example below
myClass= MyClass()

所以我明白下面的陈述是等价的。

myClass.some_method()
MyClass.some_method(myClass)

它接受 object 并将其作为第一个参数 self 传递给 some_method

但是当我这样做的时候:

myClass= MyClass()

这个流程是如何运作的?

我假设它略有不同,幕后发生了一些魔法(有人有一些内存要分配)。

这如何转化为 __init__(self) ?传递给 __init__ MyClass 的是什么?

最佳答案

myClass= MyClass() 调用 MyClass.__new__ 方法来创建 MyClass 的实例。之后 MyClass.__init__ 以这个实例作为第一个参数被调用。

请参阅文档 object.__new__ :

object.__new__(cls[, ...])

Called to create a new instance of class cls.

object.__init__(self[, ...])

Called when the instance is created.

关于Python "self"约定 __init__ vs 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557420/

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