250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- __len__
- shutil
- HTML
- __getitem__
- zipfile
- fnmatch
- glob
- shuffle()
- decode()
- randrange()
- 파이썬
- 오버라이딩
- fileinput
- count()
- MySQL
- locals()
- discard()
- __sub__
- Database
- JS
- mro()
- CSS
- node.js
- choice()
- inplace()
- items()
- MySqlDB
- remove()
- __annotations__
- View
Archives
- Today
- Total
흰둥이는 코드를 짤 때 짖어 (왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!)
(파이썬) 스페셜 메소드 본문
728x90
반응형
1. 스페셜 메소드(Special Method)
- __로 시작해서 __로 끝나는 특수함수
- 해당 메소드들을 재구현하면 객체에 여러가지 파이썬 내장 함수나 연산자에 원하는 기능을 부여할 수 있음
In [43]:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def print_point(self): # (3, 4)
print(f'({self.x}, {self.y})')
def __str__(self): # str() 함수를 오버라이딩
return (f'({self.x}, {self.y})')
def __add__(self, pt): # + 연산자를 오버라이딩 (객체 + 객체)
new_x = self.x + pt.x
new_y = self.y + pt.y
return Point(new_x, new_y)
def __sub__(self, pt): # - 연산자를 오버라이딩 (객체 - 객체)
new_x = self.x - pt.x
new_y = self.y - pt.y
return Point(new_x, new_y)
def __len__(self): # len()
return self.x + self.y
def __getitem__(self, index): # 인덱싱을 오버라이딩 (객체[인덱스])
if index == 0:
return self.x
elif index == 1:
return self.y
else:
return -1
- __str__: 문자열로 반환해주는 함수 (자바에서 toString()이랑 같은?)
- __add, sub__: 각각 +연산자와 -연산자 함수
- __len__: len()함수
- __getitem__: 인덱싱(x[i])
In [44]:
p1 = Point(3, 4)
In [45]:
p1.print_point()
(3, 4)
In [46]:
print(p1) # str() 생략
(3, 4)
In [47]:
print(str(p1))
(3, 4)
In [48]:
num1 = 10
num2 = 20
print(num1 + num2)
30
In [49]:
print(str(p1))
(3, 4)
In [50]:
p2 = Point(5, 8)
In [51]:
p3 = p1 + p2
In [52]:
print(p3)
(8, 12)
In [53]:
p3 = p1 - p2
print(p3)
(-2, -4)
In [54]:
print(len(p1))
7
In [56]:
print(p1[0], p1[1], p1[100])
3 4 -1
728x90
반응형
'파이썬 기초' 카테고리의 다른 글
(파이썬) 예외 처리 (1) | 2023.03.13 |
---|---|
(파이썬) 모듈 (0) | 2023.03.10 |
(파이썬) 상속 (0) | 2023.03.10 |
(파이썬) 객체지향과 클래스 (0) | 2023.03.09 |
(파이썬) 랜덤 모듈 (0) | 2023.03.09 |