2
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

4 回答 4

3

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

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

于 2013-02-02T11:53:52.030 回答
1

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

请参阅参考资料

于 2013-02-02T11:54:03.270 回答
1

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

于 2013-02-02T11:54:09.100 回答
1

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

如果你把这个RoundFloat类放在另一个类中,你可能会得到SomeOtherClass.RoundFloatmain.SomeOtherClass.RoundFloat

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

于 2013-02-02T11:54:55.603 回答