def 함수(Self):
파이썬을 하면서 한번쯤은 보셨을 Self입니다. def function(self): 에서 self가 의미하는 것은 무엇일까요? 바로 '인스턴스'입니다.
우리가 class를 사용하는 목표는 객체를 사용하겠단 말입니다. 이 객체가 바로 '인스턴스'라고 볼 수 있습니다. class를 사용해서 객체를 만들어 내는 것이죠. a = amuguna() 하면 클래스 amuguna의 성질을 가진 a라는 인스턴스가 생성된 것이죠.
class amuguna:
def func1():
print("a")
def func2(self):
print("a")
라는 class가 있다고 칩시다.
기존에 class에서 메서드를 이용하는 방법에는
amuguna.func1()을 하거나, self를 이용하는 방법이 있다.
를 실행하면 에러가 발생한다. 이유는 func1에는 () 가로안의 값이 없으니 인자를 전달하면 안되는데, 전달이 되서 에러가 난다. f = amuguna()를 할때 이미 인스턴스(인자)가 던져진 것이다. 따라서
를 실행하게 되면 정상 실행이 된다. 이유는 func2(self)는 self라는 인스턴스가 있기 때문이다. 여기서 self는 무슨값이냐고 묻는다면, 자동으로 할당을 해준다. 즉, 우리는 무슨값인지 알수가 없는 것이다. 반대로
를 실행하면 에러가 발생한다. 이유는 self값이 인자로 들어가 있는데, func2를 호출할 때 인자가 전달되지 않아서 발생하는 것이다. 인자라는 것은 무엇인가? 어떠한 값이다. 그 값은 메모리에 특정 주소에 저장된다. 그 주소에 있는 값이 인자이고 func2 같은 경우는 f = amuguna()라는 인수 할당을 안해줬기 때문에 에러가 발생하는 것이다.
ps. 설명을 잘 못하지만 어느정도 도움이 되셨길 바랍니다.
'개발 > Python' 카테고리의 다른 글
Python - 내가 만든 모듈, 다른 사람들이 사용하도록 패키징하기 (0) | 2024.03.15 |
---|---|
Python 정적 메소드(@staticmethod) (0) | 2024.03.14 |
파이썬 EXE 파일 만들기 (0) | 2023.12.31 |
파이썬 가상환경 설정법 (0) | 2023.12.16 |
Python @Property (0) | 2023.10.11 |