작성
·
31
0
s2 = type('SampleB',(object,),dict(attr1='100', attr2='hi', add=lambda self,x,y:x+y))
s3 = s2()
print(s3.add(10,20))
위에처럼 작성헀는데 add함수에 오류가납니다
SampleB" 클래스의 "add" 특성에 액세스할 수 없음
특성 "add" 알 수 없음basedpyright 라고나오네요
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. daeyeon ko님.
작성하신 코드에서 발생하는 오류의 원인은 add
함수가 self
를 예상하는데, 실제로는 이를 전달받지 못했기 때문입니다. add
함수가 lambda
함수로 정의되어 self
인자를 명시적으로 언급했지만, 호출할 때는 이를 자동으로 전달하지 않기 때문입니다.
이 문제를 해결하려면 add
함수를 클래스의 메서드로 정의하는 것이 좋습니다. type
을 사용하여 클래스를 생성할 때, 일반적인 메서드 정의 방식을 따르려면 __init__
함수 내에서 메서드를 추가하는 방법이 있습니다.
다음은 수정된 코드 예제입니다:
class SampleB(object):
attr1 = '100'
attr2 = 'hi'
def add(self, x, y):
return x + y
s3 = SampleB()
print(s3.add(10, 20))
이러한 형태로 메서드를 정의하게 되면 self
가 자동으로 전달되며, 문제가 해결될 것입니다.
관련된 추가 정보를 원하시면, 다음 링크에서 더 많은 정보를 확인하실 수 있습니다: 클래스와 메서드에 관한 Pyright 오류 해결하기.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.