黑猫小肥 发表于 2023-4-18 15:23:11

python63讲课后求助 类和对象

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 = 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 = 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 = e
                jobs['M'].append(e)

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


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


isdkz 发表于 2023-4-18 15:25:32

这两句代码的目的不是随机生成员工代码,而是将创建的员工对象存储到字典和列表中。这样可以方便地对员工进行查找和管理。


[*]mems = e:这句代码将员工对象e存储到mems字典中,以uid作为键。mems是一个字典,用于存储所有员工对象,可以方便地通过工号(uid)查找员工。每个员工的uid是唯一的,因此可以确保字典中不会出现重复的键。

[*]jobs['T'].append(e):这句代码将员工对象e追加到jobs字典中以'T'为键的列表中。jobs字典中的每个键对应一个职位(如 'E'、'T' 和 'M'),键对应的值是一个列表,用于存储对应职位的员工对象。这样的数据结构可以方便地按职位对员工进行分组管理。在这个例子中,jobs['T'].append(e)将e添加到组长(Teamleader)列表中。


所以,这两句代码的主要作用是组织和存储员工对象,以便于后续的查询、升级、降级等操作。

歌者文明清理员 发表于 2023-4-18 15:27:33

不是,随即得跟ranom有关
页: [1]
查看完整版本: python63讲课后求助 类和对象