딥러닝/인공지능 초격차 리뷰 (2) - 파이썬 기초

김민석·2022년 7월 17일

있던 함수를 override를 통해 재사용할 수 있다.

예시

__str__
#print로 출력 해주는
__add__
#+로 더해주는
__sub__
#-로 감해주는
__mul__
#*로 곱해주는
__len__
#거리를 구해주는

https://docs.python.org/3/reference/datamodel.html

위 링크에서 각 기능에 따른 필요한 함수를 찾아볼 수 있다.

연습문제

연습문제)

복소수 클래스를 정의 해봅시다.
덧셈, 뺄셈, 곱셈 연산자 지원
길이 (복소수의 크기) 지원
복소수 출력 '1 + 4j'와 같이 표현
비교 연산 ==, != 지원
=, <= , <, > 연산 지원
절대값 지원

import math
class ComplexNumber:
    def __init__(self, real, img):
        self.real = real
        self.img = img
        
    def __add__(self, cn):
        return ComplexNumber(self.real + cn.real, self.img + cn.img)
    
    def __sub__(self, cn):
        return ComplexNumber(self.real - cn.real, self.img - cn.img)
    
    def __mul__(self, x):
        if type(x) == int:
            return ComplexNumber(self.real * x, self.img * x)
        elif type(x) == ComplexNumber:
            return ComplexNumber(self.real * x.real - self.img * x.img, self.real * x.img + self.img * x.real )
    
    def __str__(self):
        if self.img >0:
            return '{} + {}j'.format(self.real, self.img)
        else :
            return '{} - {}j'.format(self.real, abs(self.img))
    
    #비교연산자 overriding
    def __eq__(self,cn):
        return self.real == cn.real and self.img == cn.img
    def __ne__(self,cn):
        return not (self.real == cn.real and self.img == cn.img)
    
        
    def __abs__(self):
        return math.sqrt(self.real ** 2 + self.img ** 2)
a = ComplexNumber(1,2)
b = ComplexNumber(3,5)

print(a * 3)
print(a + b)
abs(a)
profile
데이터 사이언스를 공부하는 커피쟁이

0개의 댓글