鱼C论坛

 找回密码
 立即注册
查看: 1729|回复: 2

[已解决]python63讲课后求助 类和对象

[复制链接]
发表于 2023-4-18 15:23:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class Employee:
    def __init__(self, name, job, grade, year, uid):
        self.name = name
        self.job = job
        self.grade = grade
        self.year = year
        self.uid = uid

    def get_uid(self):
        return self.uid

    def get_name(self):
        return self.name

    def get_job(self):
        return self.job

    def get_grade(self):
        return self.grade

    def set_grade(self, grade):
        self.grade = grade

    def get_year(self):
        return self.year

    def salary(self):
        return 3000 + 500 * self.grade + 50 * self.year


class Teamleader(Employee):
    def salary(self):
        return 4000 + 800 * self.grade + 100 * self.year


class Manager(Employee):
    def salary(self):
        return 5000 + 1000 * (self.grade + self.year)


def main():
    mems = {}
    jobs = {'E':[], 'T':[], 'M':[]}
    uid = 10000
    MAX_E_GRADE = 10
    MAX_T_GRADE = 6
    MAX_M_GRADE = 3
    
    while True:
        ins = input("\n1.录入;2.查询;3.升级;4.降级;5.退出:")

        # 主线功能:录入
        if ins == '1':
            name = input("姓名:")
            job = input("职位(E.普通员工;T.组长;M.经理):")
            year = int(input("工龄:"))
            grade = int(input("级别:"))

            if job == 'E':
                while grade > MAX_E_GRADE:
                    grade = int(input(f"该职位最高级别为{MAX_E_GRADE},请重新录入级别:"))
                    
                e = Employee(name, job, grade, year, uid)#类的一个对象
                mems[uid] = e
                jobs['E'].append(e)
                
            if job == 'T':
                while grade > MAX_T_GRADE:
                    grade = int(input(f"该职位最高级别为{MAX_T_GRADE},请重新录入级别:"))
                    
                e = Teamleader(name, job, grade, year, uid)
                mems[uid] = e
                jobs['T'].append(e)

            if job == 'M':
                while grade > MAX_M_GRADE:
                    grade = int(input(f"该职位最高级别为{MAX_M_GRADE},请重新录入级别:"))
                    
                e = Manager(name, job, grade, year, uid)
                mems[uid] = e
                jobs['M'].append(e)

            print(f"录入成功!姓名:{name},工号:{uid},薪资:{e.salary()}")
            uid += 1


主要是不明白,这两句代码在做什么,是在实现随机生成员工代码吗,可以解释一下吗
mems[uid] = e
jobs['T'].append(e)


最佳答案
2023-4-18 15:25:32
这两句代码的目的不是随机生成员工代码,而是将创建的员工对象存储到字典和列表中。这样可以方便地对员工进行查找和管理。

  • mems[uid] = e:这句代码将员工对象e存储到mems字典中,以uid作为键。mems是一个字典,用于存储所有员工对象,可以方便地通过工号(uid)查找员工。每个员工的uid是唯一的,因此可以确保字典中不会出现重复的键。
  • jobs['T'].append(e):这句代码将员工对象e追加到jobs字典中以'T'为键的列表中。jobs字典中的每个键对应一个职位(如 'E'、'T' 和 'M'),键对应的值是一个列表,用于存储对应职位的员工对象。这样的数据结构可以方便地按职位对员工进行分组管理。在这个例子中,jobs['T'].append(e)将e添加到组长(Teamleader)列表中。


所以,这两句代码的主要作用是组织和存储员工对象,以便于后续的查询、升级、降级等操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-18 15:25:32 | 显示全部楼层    本楼为最佳答案   
这两句代码的目的不是随机生成员工代码,而是将创建的员工对象存储到字典和列表中。这样可以方便地对员工进行查找和管理。

  • mems[uid] = e:这句代码将员工对象e存储到mems字典中,以uid作为键。mems是一个字典,用于存储所有员工对象,可以方便地通过工号(uid)查找员工。每个员工的uid是唯一的,因此可以确保字典中不会出现重复的键。
  • jobs['T'].append(e):这句代码将员工对象e追加到jobs字典中以'T'为键的列表中。jobs字典中的每个键对应一个职位(如 'E'、'T' 和 'M'),键对应的值是一个列表,用于存储对应职位的员工对象。这样的数据结构可以方便地按职位对员工进行分组管理。在这个例子中,jobs['T'].append(e)将e添加到组长(Teamleader)列表中。


所以,这两句代码的主要作用是组织和存储员工对象,以便于后续的查询、升级、降级等操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-18 15:27:33 | 显示全部楼层
不是,随即得跟ranom有关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 20:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表