除了__init__.py
文件之外,前导和尾随双下划线在文件名中是否有任何意义?例如,__model__.py
是否比model.py
更重要?
答案 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