파이썬, 클래스에 산술연산자 적용하기
글. 수알치 오상문
아래 예제를 살펴보고 실행 결과를 확인하세요.
참고로 Python 3 기준입니다.
class Dog:
def __init__(self, count=0.0):
if isinstance(count, (int, float)):
self.dog_cnt = float(count)
else:
raise ValueError("Count should be a number")
def get_dog_cnt(self):
return self.dog_cnt
def __add__(self, x): # dog + x
self.dog_cnt += x
return self.dog_cnt
def __radd__(self, x): # x + dog
return self.__add__(x)
def __sub__(self, x): # dog - x
self.dog_cnt -= x
return self.dog_cnt
def __rsub__(self, x): # x - dog
return self.__sub__(x)
def __mul__(self, x): # dog * x
self.dog_cnt *= x
return self.dog_cnt
def __rmul__(self, x): # x * dog
return self.__mul__(x)
def __truediv__(self, x): # dog / x
if x != 0 and x != 0.0:
self.dog_cnt /= x
return self.dog_cnt
else:
return self.dog_cnt
def __rtruediv__(self, x): # x // dog
return self.__truediv__(x)
def __floordiv__(self, x): # dog / x
if x != 0 and x != 0.0:
self.dog_cnt //= x
return float(self.dog_cnt)
else:
return self.dog_cnt
def __rfloordiv__(self, x): # x / dog
return self.__truediv__(x)
dog = Dog()
print(dog.get_dog_cnt()) # 0
print(dog + 5) # 5
print(dog * 2) # 10
print(1 * dog) # 10
print(dog // 2) # 5
print(dog / 2) # 2.5
print(dog - 10) # 0
print(1 + dog) # 1
print(dog - dog) # 0.0
print(dog + 10) # 10.0
print(dog // 0) # 10.0
print(dog / dog) # 1.0
'Python 기초' 카테고리의 다른 글
파이썬, 클래스의 서브 클래스 확인 (0) | 2023.12.17 |
---|---|
파이썬, 클래스와 __getattr__() (0) | 2023.12.17 |
time.time(), datetime.datetime.now() 예제 (1) | 2023.11.13 |
파이썬 3.9 추가 기능 (0) | 2023.10.27 |
Python 3.8 ~ 3.10에서 지원되는 유용한 기능 (0) | 2023.10.25 |