# 面向对象的综合应用
# 计算器:实现一些基本的计算操作,已经打印结果
# --------------- 代码1 ----------------------
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def mulit(x, y):
return x * y
print(add(2, 4)) # 6
# 实现 (2 + 4 - 3) * 5
res1 = add(2, 4)
res2 = subtract(res1, 3)
res3 = res2 * 5
print(res3) # 15
# --------------- 代码2 -----------------------
class Caculator:
__result = 0
@classmethod
#设置一个首数
def first_value(cls, value):
cls.__result = value
@classmethod
def add(cls, n):
cls.__result += n
@classmethod
def subtract(cls, n):
cls.__result -= n
@classmethod
def mulit(cls, n):
cls.__result *= n
@classmethod
def show(cls):
return cls.__result
Caculator.first_value(2)
Caculator.add(4)
Caculator.subtract(3)
Caculator.mulit(5)
print(Caculator.show()) # 15
# --------------- 代码3 -----------------------
class Caculator:
def __init__(self, firstNum):
self.__result = firstNum
def add(self, n):
self.__result += n
def subtract(self, n):
self.__result -= n
def mulit(self, n):
self.__result *= n
def show(self):
return self.__result
c = Caculator(2)
c.add(4)
c.subtract(3)
c.mulit(5)
print(c.show()) # 15
# --------------- 代码4 容错处理 -----------------------
class Caculator:
def __check_num_zsq(func):
def inner(self, n):
if not isinstance(n, int):
raise TypeError("数据类型错误")
return func(self, n)
return inner
@__check_num_zsq
def __init__(self, firstNum):
self.__result = firstNum
@__check_num_zsq
def add(self, n):
self.__result += n
@__check_num_zsq
def subtract(self, n):
self.__result -= n
@__check_num_zsq
def mulit(self, n):
self.__result *= n
def show(self):
return self.__result
c = Caculator(2)
c.add(4)
c.subtract(3)
c.mulit(5)
print(c.show()) # 15