class Employee:
__obj_flag = True
def __init__(self,name,salary,id):
self.name = name
self._salary = salary
self.id = id
@property
def salary(self):
return self._salary
@salary.setter
def salary(self, salary):
if 1000 < salary < 50000:
self._salary = salary
else:
print("工资范围为1000-50000")
def __add__(self, other):
if isinstance(other,Employee):
return self._salary+other._salary
else:
return "同类对象,不能相加"
def s_id(self):
g_id = 1000
if self.id == " ":
if Employee.__obj_flag:
self.id = 1000
Employee.__obj_flag = False
return self.id
else:
g_id += 1
self.id = g_id
return self.id
else:
return self.id
def s_name(self,name):
pass
test1 = Employee("一",2000," ")
test1.s_id()
test2 = Employee("二",3000," ")
test2.s_id()
#验证id自增和薪资相加
print("新增对象id分别为{0},{1}".format(test1.id,test2.id))
print("{0}和{1}的薪资和为{2}".format(test1.name,test2.name,test1+test2))
#验证薪资是否符合要求
test3 = Employee("三",2000000," ")
test4 = Employee("四",200033," ")
print("{0}和{1}的薪资和为{2}".format(test3.name,test4.name,test3+test4))
test2.salary = 50000000
运行结果:
新增对象id分别为1000,1001
一和二的薪资和为5000
三和四的薪资和为2200033
工资范围为1000-50000
我想请问老师,为什么
test3 = Employee("三",2000000," ")
test4 = Employee("四",200033," ")
print("{0}和{1}的薪资和为{2}".format(test3.name,test4.name,test3+test4))
这段代码打印出的sarary会相加,不会报出“工资范围为1000-50000”
test2.salary = 50000000
而这段代码打印出的sarary会报出“工资范围为1000-50000”,他们两个有什么区别吗?