일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Reversing
- 파이썬 챌린지
- java
- Operating System
- 자바 개념
- 자바 기초
- 러스트
- 데이터베이스
- 파이썬 첼린지
- 자바
- 러스트 예제
- 파이썬 알고리즘
- Database
- 데이터 통신
- 백준 러스트
- ubuntu
- Python
- 파이썬
- 알고리즘
- Python challenge
- data communication
- Rust
- 운영체제
- 백준
- 오라클DB
- 오라클
- OS
- C
- 러스트 프로그래밍 공식 가이드
- 우분투
Archives
- Today
- Total
IT’s Portfolio
[Python] Class 생성 시 self 인자에 대해서 본문
728x90
반응형
class exam:
def f1():
print("123")
def f2(self):
print("456")
exam 클래스에 self 인자를 주지 않은 f1 메서드와 self 인자를 준 f2 메서드가 있다.
f = exam()
f.f1()
* f는 객체이다. f는 exam의 인스턴스이다.
f의 f1 메서드를 수행하면
넘겨주는 인자가 없어야 하는데 1개의 인자가 자동으로 넘어가서 오류가 난다.
f.f2()
하지만 f의 f2 메서드를 수행하면
정상적으로 print 문이 수행되는 것이 보인다.
=> 파이썬은 메서드 첫 번째 인자로 항상 인스턴스를 전달해준다. 그렇기 때문에 f1 메서드 수행 시 오류가 나는 것이다.
class exam:
def f1():
print("123")
def f2(self):
print(id(self))
print("456")
f = exam()
f.f2()
print(id(f))
f2 메서드를 수행할 때 파이썬이 보내는 self의 id 값을 확인하기 위해 코드를 추가해보자.
그리고 인스턴스의 id 값도 확인해보자.
* id 함수는 객체의 고윳값, 보통 객체에 할당된 메모리 주솟값을 반환해준다.
f2 메서드의 self와 exam의 인스턴스인 f의 id 값은 서로 같은 것을 알 수 있다.
즉, self는 f는 exam의 인스턴스임을 알려주는 값이다.
exam.f1()
exam.f2()
이번에는 객체를 생성하지 않고 클래스에서 바로 메서드를 호출시켜보자.
f1 메서드는 정상적으로 수행이 되었지만 f2 메서드는 self 인잣값을 전달하지 않았다며 오류가 났다.
f = exam()
exam.f2(f)
self는 인스턴스 값을 전달해준다고 했다.
그렇기에 f 객체를 만들어준 후 f2 메서드에 f를 인잣값으로 주면 정상적으로 수행된다.
728x90
반응형
'Development Study > Python' 카테고리의 다른 글
[Python] 알고리즘 - 게시판 페이징하기 (0) | 2020.06.06 |
---|---|
[Python] 알고리즘 - 3과 5의 배수 합하기 (0) | 2020.06.04 |
[Python] Up&Down 게임을 만들어보자 (2) | 2020.04.24 |
[Python] bs4와 selenium 같이 써보기 (0) | 2020.04.13 |
[Python] selenium으로 페이스북 자동 로그인/로그아웃 하기 (0) | 2020.04.12 |
Comments