티스토리 뷰
연산자 오버로딩
연산자 오버로딩이란?
-
'메소드의 중복정의'
-
즉, 같은 이름의 메소드를 사용하는 것
파이썬에서의 오버로딩
-
파이썬에서 같은 이름의 메소드를 사용하면 늦게 정의한 메소드로 덮어쓰기 됨
수치 연산자 오버로딩
메소드(Method) | 연산자(Operator) | 인스턴스 객체(O)에 대한 사용 예 |
__add__(self, B) | + (이항) | O + B, O += B |
__sub__(self, B) | - (이항) | O - B, O -= B |
__mul__(self, B) | * | O * B, O *= B |
__truediv__(self, B) | / | O / B, O /= B |
class MyInteger:
def __init__(self, i):
self.i = i
def __add__(self, other):
return self.i + other
i = MyInteger(10)
print(i + 10) #출력 값은 20/ 연산자 왼쪽에 객체, 연산자 오른쪽에 객체가 와야함
class MyInteger:
def __init__(self, i):
self.i = i
def __radd__(self, other):
return self.i + other
i = MyInteger(10)
print(10 + i) #출력 값은 20/ 메소드 앞에 r을 붙여 연산자 왼쪽에 피연산자, 연산자 오른쪽에 객체가 옴
비교 연산자 오버로딩
메소드 | 연산자 |
__It__(self, other) | self < other |
__le__(self, other) | self <= other |
__eq__(self, other) | self == other |
__ne__(self, other) | self != other |
__gt__(self, other) | self > other |
__ge__(self, other) | self >= other |
시퀀스/매핑 자료형의 연산자 오버로딩
메소드 | 연산자 |
__len__(self) | len() |
__contains__(self, item) | item in self |
__getitem__(self, key) | self[key] |
__setitem__(self, key, value) | self[key] = value |
__delitem__(self, key) | del self(k) |
isinstance(인스턴스, 클래스): 해당 객체가 어떤 클래스로부터 만들어졌는지 확인할 수 있음
상속과 다형성
상속
class 부모 클래스:
내용
class 자식 클래스(부모 클래스):
내용
-
상속받은 자식 클래스는 부모 클래스의 속성과 메소드를 사용할 수 있음 → 자식 클래스의 이름공간에 부모 클래스의 이름공간이 포함됨
상속의 이유
-
코드를 재사용할 수 있음
-
상속받은 자식 클래스는 부모 클래스의 모든 기능을 그대로 사용 가능
-
자식 클래스는 필요한 기능만 정의하거나, 기존의 기능을 변경(Overriding)할 수 있음
class Person:
def __init__(self, name, phone=None):
self.name = name
self.phone = phone
def __str__(self):
return '<Person {0} {1}>'.format(self.name, self.phone)
class Employee(Person): #부모 클래스인 Person을 자식 클래스Employee가 사용
def __init__(self, name, phone, position, salary):
Person.__init__(self, name, phone) #부모 클래스인 Person을 연산자로
self.position = position
self.salary = salary
메소드 오버라이딩: 자식 클래스에서 부모 클래스에 정의된 메소드를 재정의하여 대치하는 것
다형성
-
다른 클래스에 속한 같은 이름의 인스턴스들이 동일한 메소드 이름으로 호출할 경우 동적으로 선택되어 수행
-
쉽게 말하면 다양한 형태를 가질 수 있다를 뜻함
다형성의 장점
-
다른 클래스에 속한 같은 이름의 다양한 메소드들에게 유사한 작업을 수행시킬 수 있음
-
추상클래스를 상속하는 다른 서브클래스 내에 작성된 같은 이름의 메소드를 다른 목적으로 사용할 수 있음
파이썬에서 다형성의 장점
-
자료형의 타입이 동적으로 결정되므로 다형성을 적용하기에 훨씬 용이함
isinstance(인스턴스, 클래스): 해당 인스턴스가 해당 클래스에 속하면 True, 속하지 않으면 False 반환
issubclass(A 클래스, B 클래스): A 클래스가 B클래스와 같거나 자식 클래스이면 True, 아니라면 False 반환
'파이썬 > 클래스' 카테고리의 다른 글
파이썬 클래스의 활용 실습해보기2 (상속) (0) | 2020.11.04 |
---|---|
파이썬 클래스의 활용 실습해보기1 (연산자 오버로딩 활용) (0) | 2020.11.04 |
클래스 파이썬 실습해보기 (0) | 2020.11.03 |
객체지향 프로그래밍(feat.클래스) (0) | 2020.11.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 개발
- 자바
- 보안
- 머신러닝
- 스마트워치
- 코드
- 프로그래밍
- python
- sql
- 금리
- 코딩테스트
- 경제
- 데이터
- 클래스
- 경제신문
- mysql
- 데이터분석
- SW
- 코테
- 그래프
- 영어
- 영어회화
- 파이썬
- plot
- 모듈
- 함수
- 코딩
- R
- Programming
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함