반응형
메직메소드란?
특정 클래스의 객체가 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))
반응형