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