self

코린이·2020년 11월 20일
1

파이썬

목록 보기
1/3

책으로 리스트를 공부하다가, 함수나 클래스를 정의하다가 의문이 들었다. 변수 입력자리에 self가 들어가는 이유가 뭔지 궁금해서 인터넷에 처보니 객체의 인스턴스 그 자체, 객체 자기 자신을 참조하는 매개변수라고 하는데 이해가 안되서 예시도 한번 보았다.

class Foo:
    def a1():
        print("func1")
        #파이썬 메서드의 첫번째 인자로 항상 인스턴스가 전달되기 때문이다.
    def a2(self):
        print("func2")

f = Foo()
#하나의 인스턴스


print(Foo.a1())
#클래스형으로 호출했기때문에 별도의 인스턴스가 없어도 오류가 발생하지않는다.

print(Foo.a2(f))

여기 위에서 볼수 있듯이 클래스를 하나의 인스턴스(f)로 만들어서 하면(a2) 처럼 바로 출력 가능하다. 하지만 a1은 인스턴스로 만들어서 출력하면 Traceback 오류가 발생하며 인스턴스 하나를 입력하라고 한다.
두 가지 경우의 결과를 도출하니 a1에는 인스턴스 메서드가 존재하지않아, 출력하는데 오류가 생기지만, a2는 인스턴스 메서드가 존재하여 출력하는데에는 문제가 없다.

하지만 클래스를 하나의 인스턴스로 만들지 않고 클래스형으로 출력을 하면 a1은 출력이된다. a2의 경우에는 클래스형으로 출력하면 self 인스턴스 메서드를 필요로 하기때문에 오류가 발생한다. self 자리에 다른 인자를 넣어 출력하면 오류가 발생하지않는다.

profile
iOS 개발자 꿈나무

0개의 댓글