문제

왜 그러한 구조

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를 제거하게 축하합니다!"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top