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'>
main这里是什么意思?
与if __name__="__main__"
的含义相同?__main__这里是什么意思?
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'>
main这里是什么意思?
与if __name__="__main__"
的含义相同?__main__这里是什么意思?
RoundFloat
是__main__
(正在运行的文件)的属性,因此为'__main__.RoundFloat'
。如果班级来自导入的模块,则__main__
将被模块名称替换。
if __name__ == '__main__'
的目的是检查模块是否是顶层脚本,并且如果它是,则执行的代码块。如果正在导入,那么该代码块将不会执行,因为__name__
应该是模块的名称。
__main__
是顶级脚本环境—它是执行脚本的内置模块。
也就是说,你运行顶层脚本的名称。它不是作为模块导入的。如果您的代码作为模块导入,则该部分将被模块名称替换。属性__name__
是模块名称。顶层脚本的名称为__main__
。
你在主序运行RoundFloat
,因为它不属于任何其他类。
如果您将RoundFloat
类放在另一个类中,您可能会得到SomeOtherClass.RoundFloat
或main.SomeOtherClass.RoundFloat
。 (我不确定“主序列”是否是正确的Python术语,但希望你能明白我的意思。)