Python

[Python] Self 및 Class개념 잡기

Jeong Jeon
반응형

1. Self 개념

  • 일반적으로 메소드의 첫 번째 인자는 항상 self가 들어온다고 본다.
  • self는 클래스로 생성된 인스턴스를 의미한다. 클래스 인스턴스가 생성되면 해당 인스턴스는 특정 메모리 주소에 저장이 되는데, 메모리 주소에 접근하는것을 self가 도와준다고 보면 된다.
>>> class Bab :
...     def func1():
...             print("밥알1")
...     def func2(self):
...             print("밥알2")
...
>>> b = Bab()
>>> b.func1()
==> 결과 : Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: func1() takes 0 positional arguments but 1 was given
>>> b.func2()
==> 결과 : 밥알2

상단의 코드는 Class를 만들고, Class를 b라는 변수에 담아 instance 생성한 후 인스턴스로 메소드를 호출하는 형식이었다.

 

자 그럼 self를 무조건 써야되나?라는 궁금증이 생긴다.

아래 코드를 보자

>>> class Bab :
...     def func1():
...             print("밥알1")
...     def func2(self):
...             print("밥알2")
...
>>> Bab.func1()
밥알1
>>> Bab.func2()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: func2() missing 1 required positional argument: 'self'

클래스.메소드명 으로 호출할때는 오히려 반대의 결과를 볼수있다.

Bab.func2()의 오류 코드를 확인하면 self라는 아규먼트가 없다고 나오는데, 이는 첫번째 예제에서 말하는 self를 지칭하는것이 아니게 된것이다.

 

다양한 언어를 공부하면서 이런부분이 헷깔려질수 있다.

반응형

'Python' 카테고리의 다른 글

[Python] Pandas 기초 공부 - Series  (0) 2021.01.13
[Python] Class란? 개념잡기  (0) 2021.01.04
[Python] - JSON Parsing(파싱)  (0) 2020.12.30
[Python] Closure 및 Decorator  (0) 2020.12.29
[Python] 기초문법 - 함수  (0) 2020.12.29