'널널한교수 기초 파이썬' 내용을 인용하여 공부 목적으로 작성된 게시물입니다.
#1. 생성자(__init__) 메소드
__init__(self) : '초기화 함수' 라고 불리우며 인스턴스를 만들 때 자동으로 실행되는 메소드
객체를 만들때 인스턴스 변수가 기본값(default value)을 가지면 좋은 경우가 있다. 이때, 생성자를 이용하면 초기 상태값을 가진 객체를 생성하는 것이 가능하다.
이 생성자메소드는 객체가 생성될 때 자동으로 호출된다.
#2. 문자열 화(__str__) 메소드
__str__(self) : 인스턴스 자체를 출력할 때의 형식을 지정해주는 메소드로 문자열 객체를 반환한다.
print()함수가 인스턴스를 출력할 때 지정된 형식으로 출력한다.
#3. 특수 메소드
연산자/함수 | 메소드 | 설명 | 연산자 | 메소드 | 설명 |
x + y | __add__(self, other) | 덧셈 | x == y | __eq__(self, other) | 같다 |
x * y | __mul__(self, other) | 곱셈 | x > y | __gt__(self, other) | 크다(초과) |
x - y | __sub__(self, other) | 뺄셈 | x >= y | __ge__(self, other) | 크거나 같다(이상) |
x / y | __truediv__(self, other) | 나눗셈 | [index] | __getitem__(self, index) | 인덱스 연산자 |
x % y | __mod__(self, other) | 나머지 | x in y | __contains__(self, value) | 멤버 확인 |
x < y | __lt__(self, other) | 작다(미만) | len(x) | __len__(self) | 요소길이 |
x <= y | __le__(self, other) | 작거나 같다(이하) | str(x) | __str__(self) | 문자열 표현 |
+추가
x // y | __floordiv__(self, other) | 몫 | int(x) | __int__(self) | 정수 |
+ x | __pos__(self) | 양수 | abs(x) | __abs__(self) | 절대값 |
- x | __neg__(self) | 음수 | hash(x) | __hash__(self) | 정수 해쉬 코드 |
float(x) | __float__(self) | 실수 | iter(x) | __iter__(self) | x의 이터레이터 |
__getitem__(self, index) : 인스턴수 변수에 직접 접근하지 않고 객체 자체를 통해서 슬라이싱을 구현하기 위해 상용하는 메소드
__contains__(self, value) : 특정 인스턴스 변수 내 해당 value가 포함하고 있는지를 in 을통해 확인 가능
#4. 특수 메소드 실습
- 2차원 벡터를 표현하는 Vector2D 라는 클래스를 구현해 보자
- 이 클래스의 인스턴스에 덧셈과 뺄셈을 +, - 연산자로 시도해 보자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class Vector2D:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return "({}, {})".format(self.x, self.y)
def __add__(self, other):
return Vector2D(self.x+other.x, self.y+other.y)
def __sub__(self, other):
return Vector2D(self.x-other.x, self.y-other.y)
p1 = Vector2D(3, 4)
print(p1)
p2 = Vector2D(1, 2)
print(p2)
p3 = p1 + p2
print(p3)
p4 = p1 - p2
print(p4)
|
cs |
print()의 결과물은

'프로그램 > 파이썬' 카테고리의 다른 글
클래스 접근 지정자 및 정보은닉 (0) | 2020.08.01 |
---|---|
클래스 정의와 self (0) | 2020.07.30 |
객체 지향 프로그래밍 과 클래스 (0) | 2020.07.30 |