さてさて、私はこの出くわしたとき、私はいくつかのソースを見てみました:パイソン、__init__と自己混乱
>>> def __parse(self, filename):
... "parse ID3v1.0 tags from MP3 file"
... self.clear()
... try:
... fsock = open(filename, "rb", 0)
... try:
... fsock.seek(-128, 2)
... tagdata = fsock.read(128)
... finally:
... fsock.close()
... if tagdata[:3] == 'TAG':
... for tag, (start, end, parseFunc) in self.tagDataMap.items():
... self[tag] = parseFunc(tagdata[start:end])
... except IOError:
... pass
...
だから、私はそれをテストすることを決めました。
>>> __parse("blah.mp3")
そして、私はこのエラーを受け取っ:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __parse() takes exactly 2 arguments (1 given)
これは私がこれに遭遇したのは初めてではないでしょう、私は、私は、引数のパラメータリストに自己を含むことを意味しています考え続けますしかし、私はそれが正しいとは限りません。誰かが私に説明しようと思ったのですが、これは私が周りを遊んだりしようとしているコードではなぜそうなるのでしょうか?私はその言葉の理解のレベルのせいで、initやselfが何をするのか、 def x(b):print bはdef x(self、b)と同じです:self.b = b print self.b is not?どうしてそんなに重要なのですか?
私はちょうど基本的な説明をしたいので、私はこれを私の心の中から得ることができます、ありがとう。
ああ、init/selfはクラスで使われていて、defのものではありません。 –
あるいは、def __init__をクラスで使用する必要があります。また、def(self、...)もクラスで使用する必要があります。モジュール/メソッド自体は自己のものではありませんか? –
技術的には、「自己」はキーワードではありません。実際には、あなたはそれがふりをするべきです。 – Brian