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術語,但希望你能明白我的意思。)