2013-02-02 46 views
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'> 

main這裏是什麼意思?
if __name__="__main__"的含義相同?__main__這裏是什麼意思?

回答

3

RoundFloat__main__(正在運行的文件)的屬性,因此爲'__main__.RoundFloat'。如果班級來自導入的模塊,則__main__將被模塊名稱替換。

if __name__ == '__main__'的目的是檢查模塊是否是頂層腳本,並且如果它是,則執行的代碼塊。如果正在導入,那麼該代碼塊將不會執行,因爲__name__應該是模塊的名稱。

1

__main__是頂級腳本環境—它是執行腳本的內置模塊。

reference

1

也就是說,你運行頂層腳本的名稱。它不是作爲模塊導入的。如果您的代碼作爲模塊導入,則該部分將被模塊名稱替換。屬性__name__是模塊名稱。頂層腳本的名稱爲__main__

1

你在主序運行RoundFloat,因爲它不屬於任何其他類。

如果您將RoundFloat類放在另一個類中,您可能會得到SomeOtherClass.RoundFloatmain.SomeOtherClass.RoundFloat。 (我不確定「主序列」是否是正確的Python術語,但希望你能明白我的意思。)