[英]Significance of double underscores in Python filename
除了__init__.py
文件之外,前導和尾隨雙下划線在文件名中是否有任何意義? 例如, __model__.py
以什么方式比model.py
更重要?
除了__init__.py
和__main__.py
之外的文件名中的雙下划線對Python本身沒有任何意義,但框架可以使用它們來指示/識別各種事物。
唉唉! 我看到你發現了魔術方法。
雙下划線稱為“dunder”,它們調用特殊方法,這些方法可以對對象產生一些非常好的效果。 它們沒有改變意義,但它們是相當驚人的伏都教,並且是一個很好的工具。
這是許多鏈接的鏈接,我通過這里學到了所有關於魔法的方法。 http://pythonconquerstheuniverse.wordpress.com/2012/03/09/pythons-magic-methods/
__init__
是一種神奇的方法,用於聲明在對象初始化時發生的事情。 它前面只有__new__
。
我一直使用的這些方法中最有用的是__dict__
方法。 __dict__
方法使得類中的所有屬性都變成鍵值對,然后可以像字典一樣使用它們。 雖然我不認為使用它作為文件名會很有用。
這是一個例子:
class Thing(object):
def __init__(self): ##Init here is a magic method that determines what haps first
self.tint = "black"
self.color = "red"
self.taste = "tangy"
thing = Thing()
dictionary_from_class = {}
for key in thing.__dict__.keys(): ##returns all key values. here: "tint, color, taste"
dictionary_from_class[key] = thing.__dict__[key]
在python中啟動Idle,然后嘗試一下。 祝練蟒蛇伏都教好運!
EDITED
對不起,我真的很快就讀到了你的問題,讓我提一下這個問題,因為我的答案中可能沒有提及:如果文件名是__init__.py
,那就像我之前提到的那樣。 它調用Initialization,一旦達到模塊使用文件夾,python就會執行這些操作。 也就是說,如果您正在讀取該文件,因為它被調用,例如引用模塊的文件夾,在這種情況下,您需要一個__init__.py
文件,只是為了讓python在文件夾中識別它。 您可以使用任何魔術方法作為名稱,以便在使用時獲得類似的功能。
我希望澄清是有用的。
-約瑟夫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.