# encoding: utf-8
# ************************************************计算器************************************************
class Caculator:
def __check_num_decorator(func):
def inner(self, num):
if not (isinstance(num, int) | isinstance(num, float)):
raise TypeError("这个数据的类型有问题,应该是一个数值类型")
return func(self, num)
return inner
def create_say_word_decorator(word):
def say_word_decorator(func):
def inner(self, num):
print(word + str(num))
return func(self, num)
return inner
return say_word_decorator
@__check_num_decorator
@create_say_word_decorator("first")
def __init__(self, num):
self.__result = num
@__check_num_decorator
@create_say_word_decorator("add")
def add(self, num):
self.__result += num
return self
@__check_num_decorator
@create_say_word_decorator("sub")
def sub(self, num):
self.__result -= num
return self
@__check_num_decorator
@create_say_word_decorator("mul")
def mul(self, num):
self.__result *= num
return self
@__check_num_decorator
@create_say_word_decorator("div")
def div(self, num):
if num == 0:
raise ZeroDivisionError("不能为0")
self.__result /= num
return self
def get_result(self):
return self.__result
result = property(get_result)
c = Caculator(14)
c.add(78).sub(90).mul(90)
print(c.result)