Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python“;“自我”;约定初始化vs方法_Python - Fatal编程技术网

Python“;“自我”;约定初始化vs方法

Python“;“自我”;约定初始化vs方法,python,Python,因此,我理解以下陈述是等价的 class MyClass(object): def __init__(self): self.var = "hi" def some_method(self): print self.var #for the example below myClass= MyClass() 它接受对象并将其作为第一个参数self传递给some\u方法 但当我这样做的时候: myClass.some_method() MyClass.s

因此,我理解以下陈述是等价的

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

   def some_method(self):
       print self.var

#for the example below
myClass= MyClass()
它接受
对象
并将其作为第一个参数
self
传递给
some\u方法

但当我这样做的时候:

myClass.some_method()
MyClass.some_method(myClass)
这个流程是如何工作的

我假设它有点不同,一些魔术发生在幕后(有人有一些内存要分配)

如何将其转换为
\uuuuu init\uuuuuuuu(self)
?传递给
\uuuu init\uuuu
MyClass
的是什么

MyClass()
创建一个全新的对象,该对象作为参数
self
传递给
\uuuu init\uuuuu(self)
。然后,您可以在
self
上设置所需的任何字段,然后
MyClass()
返回该字段。

\uuuu init\uuuu()
方法在创建类实例后立即调用

myClass=myClass()
调用
myClass.\uu新的\uuuu
方法来创建
myClass
的实例。在这之后,
MyClass.\uuuuu init\uuuuu
将使用此实例作为第一个参数进行调用

见文件:

对象。
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
(cls[,…])

调用以创建类cls的新实例

对象。
\uuuuu init\uuuuu
(self[,…])

在创建实例时调用


只是一个小小的吹毛求疵:
object=MyClass()
重新定义对象,这可能不是您想要做的事情。:)@mrb:)挑剔,挑剔(重命名对象->myClass)
myClass= MyClass()