Python文件名中双下划线的意义

时间:2012-04-02 02:13:23

标签: python

除了__init__.py文件之外,前导和尾随双下划线在文件名中是否有任何意义?例如,__model__.py是否比model.py更重要?

2 个答案:

答案 0 :(得分:7)

__init__.py__main__.py以外的文件名中的双下划线对Python本身没有意义,但框架可以使用它们来表示/识别各种事物。

答案 1 :(得分:0)

唉唉!我发现你已经发现了魔术方法。

双下划线称为“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在文件夹中识别它。您可以使用任何魔术方法作为名称,以便在使用时获得类似的功能。

我希望澄清是有用的。

-Joseph