“__init__”在 Python 中看起来很丑。有没有另一种方法来编码这个结构?

gor*_*vix 5 python

我在我的代码中使用了这个,但是“underscore underscore init underscore underscore”在Python中看起来很丑,因为一看就不清楚这些前缀和后缀是一个、两个还是三个字符。有没有另一种方法来编码这个没有双下划线的结构?例如:

class MyForm(forms.Form):
    foo = forms.CharField()
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.bar = bar(self)
Run Code Online (Sandbox Code Playgroud)

令人讨厌的是,这段代码不起作用,所以显然下划线起着至关重要的作用:

class MyForm(forms.Form):
    foo = forms.CharField()
    def init(self, *args, **kwargs):
        super(MyForm, self).init(*args, **kwargs)
        self.bar = bar(self)
Run Code Online (Sandbox Code Playgroud)

这个语法的目的是什么?

wim*_*wim 3

是否有另一种方法可以在没有双下划线的情况下编码此构造?

不,这直接是 Python 对象模型的一部分:

https://docs.python.org/3/reference/datamodel.html#object.__init__

如果不重新编译您自己的 Python 解释器,则无法更改此设置。

这个语法的目的是什么?

双下划线“dunder”表示在对象模型中具有特殊含义的方法。随着时间的推移,你会习惯它,甚至可能开始喜欢它。阅读代码时,它提供了一种简单的方法来直观地区分任何第 3 方代码中的 Python 数据模型“挂钩”。