簡體   English   中英

Python文件名中雙下划線的意義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM