프로그래밍 문법/python

파이썬 매직메소드

씩씩한 IT블로그 2021. 4. 1. 17:36
반응형

메직메소드란?

특정 클래스의 객체가 builtin 함수(혹은 사칙연산)의 input값으로 사용될 때 그 output값을 정의하는것.

예를 들어 string의 객체인 a,b가 아래와 같이 있다고 하자.

a="hi"

b="bye"

이때 print()를 사용하면(print(a),print(b)) 

hi
bye

위와 같이 나오고 a+b를 하면

hi bye

위와같은 결과를 얻는다.

 

그렇다면 우리가 직접 클래스를 정의하고 그 클래스의 객체가 print, +, add등의 built in 함수에 사용되었을 때 결과값을 정의해보자.

 

클래스 정의 및 매직메소드 정의

class Myclass:
    def __init__(self,name,tall):
        self.name=name
        self.tall=tall

    def __repr__(self): # print()했을때 이름이 나오게 정의
        return self.name

    def __add__(self,other): # + 했을때 키가 더해지게 정의
        return self.tall+other.tall

    def __len__(self): # len()했을때 키가 나오게 정의
        return self.tall


# print()
d=Myclass("dave",180)
print(d)

# +
p=Myclass("park",170)
y=Myclass("yun",160)
print(p+y)

# len()
print(len(d))
반응형