会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
Python 全系列/第一阶段:Python入门/面向对象 4456楼
Python 全系列/第一阶段:Python入门/面向对象 4458楼
Python 全系列/第一阶段:Python入门/面向对象 4459楼

class Employee:
    __init_flag=True

    def __init__(self,id,name,salary):
        self.id = id
        self.name=name
        self.__salary=salary

    def __add__(self, other):    #+运算符重载
        if isinstance(other,Employee):
            return self.__salary+other.__salary   #两个对象相加时,返回薪水和
        else:
            print('两个雇员不属于一个公司,不能相加')

    @property
    def salary(self):
        return self.__salary

    @salary.setter
    def salary(self,salary):
        if (1000<salary<50000):   #限制薪水范围
            self.__salary=salary
        else:
            print('薪水录入错误,请重新录入')

    def input(self):
        d=1000
        if self.id=='':  #当不输入id时
            if Employee.__init_flag:
                self.id=1000   #给第一个员工id为1000
                Employee.__init_flag=False
                return self.id
            else:
                d+=1    #给第二个员工及之后的员工id加1
                self.id=d
                return self.id
        else:            #当输入id时
            return self.id

e3=Employee('','小李',5500)
e4=Employee('','小刘',38000)
print(e3.input())
print(e4.input())    #当不输入id时,雇员id依次递增

e1=Employee(1007,'小王',4500)
e2=Employee(1008,'小张',6000)
print(e1+e2)     #两个雇员相加时,返回薪水和

e5=Employee(1009,'小蒙',-900)
print(e5.salary)

运算结果e5.salary是负值:-900,为什么不是判断“薪水录入错误,请重新录入”,我看到提问区有个小伙伴的问题跟我一样,但是老师的回答没看懂,麻烦老师解答,谢谢


Python 全系列/第一阶段:Python入门/面向对象 4460楼
Python 全系列/第一阶段:Python入门/Python入门(动画版) 4461楼
Python 全系列/第一阶段:Python入门/编程基本概念 4462楼
Python 全系列/第一阶段:Python入门/序列 4463楼
Python 全系列/第一阶段:Python入门/函数和内存分析 4464楼
Python 全系列/第一阶段:Python入门/Python入门(动画版) 4465楼
Python 全系列/第一阶段:Python入门/Python入门(动画版) 4467楼

class Employee:
    
    __obj_flag = True
    def __init__(self,name,salary,id):
        self.name = name
        self._salary = salary
        self.id = id

    def __add__(self, other):
        if isinstance(other,Employee):
            return self._salary+other._salary
        else:
            return "同类对象,不能相加"

    @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 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))

[object Object]
老师为什么我输入工资为200000还是可以相加,没有报"工资范围为1000-50000"


Python 全系列/第一阶段:Python入门/面向对象 4469楼

QQ截图20190704201603.png

为什么这些章节在整个课程体系里没有了?

Python 全系列/第一阶段:Python入门/面向对象 4470楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637