__main__在这里是什么意思?

时间:2013-02-02 11:50:50

标签: python

class  RoundFloat(float):
  def __new__(cls,val):
    x=float.__new__(cls,round(val,2))
    print x, type(x)

>>>RoundFloat(1.785)
1.78   <class '__main__.RoundFloat'>

这里主要的含义是什么? 与if __name__="__main__"中的含义相同?

4 个答案:

答案 0 :(得分:3)

RoundFloat__main__(正在运行的文件)的属性,因此'__main__.RoundFloat'。如果该类来自导入的模块,则__main__将替换为模块名称。

if __name__ == '__main__'的目的是检查模块是否是顶级脚本,如果是,则执行一段代码。如果正在导入,那么代码块将不会执行,因为__name__将是模块的名称。

答案 1 :(得分:1)

__main__是一个顶级脚本环境 - 它是执行脚本的内置模块。

请参阅reference

答案 2 :(得分:1)

这是您运行的顶级脚本的名称。它不是作为模块导入的。如果您的代码是作为模块导入的,那么该部分将被模块名称替换。属性__name__是模块名称。顶级脚本的名称为__main__

答案 3 :(得分:1)

您在主序列中运行RoundFloat,因为它不属于任何其他类。

如果您将RoundFloat课程放在另一个课程中,您可能会获得SomeOtherClass.RoundFloatmain.SomeOtherClass.RoundFloat

(我不确定“主序”是否是正确的Python术语,但希望你能理解我的意思。)