好的,所以当我遇到这个时,我正在查看一些来源:
>>> 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)
这不是我第一次遇到这种情况,我一直认为我应该将 self 包含在参数参数列表中,但我知道那是不对的。有人可以向我解释为什么我尝试使用的代码经常发生这种情况,我想这是由于我对这些术语的理解程度,我什至几乎不了解 init 或 self 做了什么,或者为什么它是相关的。def x(b): print b 和 def x(self, b): self.b = b print self.b 一样,不是吗?为什么这么重要!
我只是想要一个基本的解释,所以我可以摆脱这个想法,谢谢。