2

代码

class MyClass(object):
    def MyMethod(self):
        print(self)           

MyObject = MyClass()
print(MyObject.MyMethod())            

输出

<__main__.MyClass object at 0x0000000002B70E10 >

这是什么__main__意思?参数中传递了self什么?

4

5 回答 5

5

这是什么__main__意思?

直接调用的脚本被视为__main__模块。它可以像任何其他模块一样被导入和访问。

self 参数中传递了什么?

中包含的参考MyObject

于 2013-06-01T02:39:47.517 回答
2

__main__如果直接从命令行运行,则为当前模块的名称。如果您要从另一个模块导入该模块import my_module,它将以此名称为人所知。因此,印刷品会说:

< my_module.MyClass object at 0x0000000002B70E10 > 
于 2013-06-01T02:40:27.333 回答
0

第一的:

__main__表示运行该方法的类是正在运行的主文件 - 您单击的文件或您在终端中键入的文件是该类主持的文件。这就是为什么写是个好习惯

if __name__ == "__main__":
    #do stuff

在您的测试代码上 - 这保证了您的测试代码仅在代码从最初调用的文件中运行时才会运行。这也是为什么您永远不应该编写顶级代码的原因,特别是如果您以后想要多线程!

自我是标识类的关键词。每个方法都需要有第一个参数“self”——注意,如果你不这样做,就不会抛出错误,你的代码只会失败。调用 self.variable 表示查找类变量,而不是查找局部变量(仅在该方法内)或全局变量(对所有人可用)。同样,调用 self.methodName() 会调用属于该类的方法。

所以:

class Foo: #a new class, foo
    def __init__( self ):
        #set an object variable to be accessed anywhere in this object
        self.myVariable = 'happy' 
        #this one's a local variable, it will dissapear at the end of the method's execution
        myVaraible = sad 
        #this calls the newMethod method of the class, defined below. Note that we do NOT write self when calling.
        self.newMethod( "this is my variable!" )

    def newMethod (self, myVariable):
        #prints the variable you passed in as a parameter
        print myVariable 
        #prints 'happy', because that's what the object variable is, as defined above
        print self.myVariable 
于 2013-06-01T02:48:06.670 回答
0

__main__是您的脚本正在其中运行的模块的名称。您没有定义库,因此它不是具有名称的模块。

至于self,它相当于thisC++ 或 Java 中的,但 Python 要求你显式命名它。查看教程

于 2013-06-01T02:40:03.953 回答
0

我解决了。你可以使用列表。例如 →

print(list(your object))
于 2018-07-13T01:52:14.697 回答