我在我的代码中使用了这个,但是“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)
这个语法的目的是什么?
是否有另一种方法可以在没有双下划线的情况下编码此构造?
不,这直接是 Python 对象模型的一部分:
https://docs.python.org/3/reference/datamodel.html#object.__init__
如果不重新编译您自己的 Python 解释器,则无法更改此设置。
这个语法的目的是什么?
双下划线“dunder”表示在对象模型中具有特殊含义的方法。随着时间的推移,你会习惯它,甚至可能开始喜欢它。阅读代码时,它提供了一种简单的方法来直观地区分任何第 3 方代码中的 Python 数据模型“挂钩”。
| 归档时间: |
|
| 查看次数: |
642 次 |
| 最近记录: |