144 왜 그런 구조 class A: def __init__(self, a): self.a = a def p(self, b=self.a): print b 오류가 NameError: name 'self' is not defined있습니까? python nameerror — 크리스 소스
159 기본 인수 값은 함수 정의시 평가되지만 self함수 호출시에만 사용 가능한 인수입니다. 따라서 인수 목록의 인수는 서로를 참조 할 수 없습니다. 인수로 기본 인수를 지정 None하고 코드에서 테스트를 추가 하는 일반적인 패턴입니다 . def p(self, b=None): if b is None: b = self.a print b — intgr 소스 4 위의 내용이 매우 예쁘지 않다고 생각하지만 (나는 잘 작동하는 루비에서 온 것입니다) 위의 내용은 실제로 해결 방법으로 작동합니다. 파이썬이 매개 변수 목록에서 자체를 사용할 수 없도록 선택하는 것은 여전히 어색합니다. — shevy 2 @shevy : "self"는 파이썬에서 특별한 의미가 없으며 , 첫 번째 주장에서 전통적으로 선택된 이름 일뿐 입니다. "self"를 "me"또는 "x"로 바꿀 수도 있습니다. — Max 더 좋은 방법이 없습니까? self를 참조해야하는 12 개의 기본 인수를 취하는 함수가 있다면 실제로 12 개의 if 문이 필요합니까? 이것은 매우 어색합니다. — Richard J. Barbalace
6 Google을 통해 여기에 도착한 경우 클래스 함수에 첫 번째 매개 변수로 자신을 부여했는지 확인하십시오. 특히 함수 내에서 해당 객체의 값을 참조하려고하면. def foo(): print(self.bar) > NameError : 이름 'self'가 정의되지 않았습니다 def foo(self): print(self.bar) — 에리히 소스