Okay, so dass ich einen Blick auf einige Quelle zu nehmen, wenn ich auf diese kam:Python, __init__ und Selbst Verwirrung
>>> 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
...
Also entschied ich mich, es zu testen.
>>> __parse("blah.mp3")
Und erhielt ich diesen Fehler:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __parse() takes exactly 2 arguments (1 given)
Dies wäre nicht das erste Mal sein, ich das erlebt habe, ich denke immer, ich bin selbst Parameterliste im Argument enthalten gemeint Aber ich weiß, dass das nicht stimmt. Könnte mir jemand erklären, warum das viel mit Code passiert, mit dem ich versuche herumzuspielen? Ich nehme an, aufgrund meines Verständnisses der Begriffe, verstehe ich kaum, was Init oder Selbst ist oder warum es relevant ist. def x (b): print b ist dasselbe wie def x (self, b): self.b = b drucke self.b, oder? Warum ist es so wichtig!
Ich möchte nur eine grundlegende Erklärung, so kann ich das aus meinem Kopf bekommen, danke.
Ah, so init/self sollte mit Klassen verwendet werden und nicht mit defs, die nicht in Klassen sind? –
Oder eher, def __init__ sollte in Klassen verwendet werden, und def was auch immer (self, ...) sollte auch in Klassen verwendet werden, Module/Methoden selbst sollten keine eigenen haben? –
Technisch ist "Selbst" kein Schlüsselwort. In der Praxis sollte man so tun, als wäre es so. – Brian