NameError : Name 'self'는 정의되지 않았습니다
문제
왜 그러한 구조
class A:
def __init__(self, a):
self.a = a
def p(self, b=self.a):
print b
오류가 발생합니다 NameError: name 'self' is not defined
?
해결책
기본 인수 값은 함수 정의 시간에서 평가되지만 self
기능 호출 시간에서만 사용할 수있는 인수입니다. 따라서 인수 목록의 인수는 서로를 참조 할 수 없습니다.
인수를 기본으로하는 것은 일반적인 패턴입니다. None
코드로 테스트를 추가하십시오.
def p(self, b=None):
if b is None:
b = self.a
print b
다른 팁
'B'를 설정하지 않으려는 옵션이없는 경우 :
def p(self, **kwargs):
b = kwargs.get('b', self.a)
print b
Google을 통해 여기에 도착한 경우 클래스 기능의 첫 번째 매개 변수로 자체를 제공했는지 확인하십시오. 특히 함수 내부의 객체에 대한 값을 참조하려고하는 경우.
def foo():
print(self.bar)
> nameerror : 이름 'self'가 정의되지 않았습니다.
def foo(self):
print(self.bar)
> "Nameerror를 제거하게 축하합니다!"
제휴하지 않습니다 StackOverflow