[python] NameError : 이름 ‘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)


답변