상세 컨텐츠

본문 제목

30. 파이썬 클래스 - part2

프로그래밍 언어/Python(파이썬)

by 알파고제로 2023. 10. 20. 09:00

본문

■ 사용자 정의 예외 클래스 만들기

  • 특정 상황에 맞는 예외 클래스를 프로그래머가 직접 만들어 사용하는 것을 사용자 정의 예외라고 한다.
  • Exception 클래스를 상속 받아서 만든다
  • 생성자에서 부모 클래스의 생성자를 호출해서 예외 메시지를 전달하거나
  • 또는 __str__ 메서드를 오버라이딩하여 예외 메시지를 설정한다.
class InvalidTransactionException(Exception):
	def __init__(self, msg):
		self.msg = msg

	def __str__(self):
		return "[Invalid Transaction Exception] "+self.msg

 raise InvalidTransactionException('잔고가 부족합니다')
InvalidTransactionException Traceback (most recent call last) Cell In[2], line 1 ----> 1 raise InvalidTransactionException('잔고가 부족합니다.’) 

InvalidTransactionException: [Invalid Transaction Exception] 잔고가 부족합니다. 

 

 instance 메서드 / class 메서드 / static 메서드

  • 인스턴스 메서드 : 일반적인 메서드이며 객체에 소속되는 메서드이다.
  • 클래스 메서드: 특정 객체에 대한 작업을 처리하는 것이 아니라 클래스 전체가 공유한다.
  • 정적 메서드: 클래스에 포함되는 단순한 유틸리티 메서드이다.
  • 특징
    1.  instance method : 첫 번째 인자로 self를 전달
    2. class method : 첫 번째 인자로 cls를 전달. @classmethod 데커레이터를 붙여 선언
    3. static method : 특별히 추가되는 인자가 없다. @staticmethod 데커레이터를 붙여 선언

 

 연산자 메서드

  • 클래스별로 연산자의 동작을 고유하게 정의하는 기능을 연산자 오버로딩이라고 한다.
  • 클래스에 연산자 메서드를 정의하면 객체에 대해서도 연산자를 사용할 수 있다.
  • 연산자별로 메서드의 이름이 정해져 있다.
연산자 메서드 우변일 때 메서드
== __eq__ -
!= __ne__ -
< __lt__ -
> __gt__ -
<= __le__ -
>= __ge__ -
+ __add__ __radd__
- __sub__ __rsub__
* __mul__ __rmul__
/ __div__ __rdiv__

※ 2+a 형식으로 객체가 우변으로 올 때는 앞에 r이 붙은 함수명을 사용한다. 교환법칙이 성립하는 연산자는 우변일 때의 연산자 메서드가 필요 없다.

 

 추상(abstract) 클래스

  • 추상클래스란 구현되지 않은 추상메소드를 한 개 이상 가지며, 자식클래스에서 해당 추상 메소드를 반드시 구현하도록 강제
  • 상속받은 클래스는 추상메소드를 구현하지 않아도, import할 때까지 에러는 발생하지 않으나 객체를 생성할 시 에러가 발생한다.
  • 추상클래스를 만들기 위한 형식은 아래와 같다.
    1. 반드시 abc 모듈을 import 해야 한다.
    2. 추상메소드는 생략하면 기본적인 클래스 기능은 동작하지만, 추상메소드를 추가한 후에는 객체를 생성하면 에러가 발생한다.
from abc import *
class 추상클래스명(metaclass=ABCMeta):
 
    @abstractmethod
    def 추상메소드(self):
        pass

'프로그래밍 언어 > Python(파이썬)' 카테고리의 다른 글

29. 파이썬 클래스 - part1  (0) 2023.10.19
28. 파이썬 예외처리  (0) 2023.10.19
27. File과 Directory  (0) 2023.10.18

관련글 더보기

댓글 영역