좋아, 그래서 내가 어떤 소스에서 살펴 본다 된 나는이 가로 질러 왔을 때 :파이썬, __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
...
그래서, 나는 그것을 테스트하기로 결정했다.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __parse() takes exactly 2 arguments (1 given)
이것은, 내가 인수 매개 변수 목록에서 자신을 포함하는 의미있어 계속 생각 나는이 발생 이번이 처음되지 않을 것 :
>>> __parse("blah.mp3")
는, 나는이 오류가 발생 ,하지만 나는 그것이 옳지 않다는 것을 압니다. 어떤 사람이 내게 설명 할 수 있을까요?이 코드를 사용하여 놀아 보려고하는 이유는 무엇입니까? 내 용어의 이해 수준에 기인한다고 생각합니다. init 또는 self가 수행하는 작업이나 관련성이 거의 이해되지 않는 경우도 있습니다. def x (b) : print b는 def x (self, b)와 같습니다 : self.b = b print self.b 그렇지 않습니까? 왜 그렇게 중요합니까!
나는 단지 기본 설명을 원한다. 그래서 나는 이것을 내 머리 속에서 고칠 수있다. 고마워.
아, 그래서 init/self는 클래스와 함께 사용되어야하며, def가 아닌 그 안쪽 클래스와 함께 사용해야합니까? –
또는 클래스에서 def __init__을 사용해야하고 클래스에서 사용되는 def (self, ...)도 def로 지정해야합니다. 모듈/메서드 자체에서는 자체가 없어야합니다. –
기술적으로 "자기"는 키워드가 아닙니다. 실제로, 당신은 그것을 가장해야합니다. – Brian