본문 바로가기

프로그램/파이썬

클래스 생성자, 문자열화, 특수 메소드

'널널한교수 기초 파이썬' 내용을 인용하여 공부 목적으로 작성된 게시물입니다.

#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(34)
print(p1)
p2 = Vector2D(12)
print(p2)
 
p3 = p1 + p2
print(p3)
p4 = p1 - p2
print(p4)
cs

print()의 결과물은 

'프로그램 > 파이썬' 카테고리의 다른 글