Хорошо, поэтому я взглянул на какой-то источник, когда наткнулся на это:
>>> 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 не так ли? Почему это так важно!
Мне просто нужно базовое объяснение, чтобы я мог выбросить это из головы, спасибо.