왜 그런 구조
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)