美文网首页
⽤⾯向对象的形式编写⼀个⽼师类, ⽼师有特征:编号、姓名、性别、

⽤⾯向对象的形式编写⼀个⽼师类, ⽼师有特征:编号、姓名、性别、

作者: 晨颜 | 来源:发表于2023-03-22 10:54 被阅读0次

⽼师类中有功能
1、⽣成⽼师唯⼀编号的功能,可以⽤hashlib对当前时间加上⽼师的所有信息进⾏校验得到⼀个hash值来作为⽼师的编号 #(⽤uuid)
2、获取⽼师所有信息
3、将⽼师对象序列化保存到⽂件⾥,⽂件名即⽼师的名字,提示功能如下
4、从⽂件夹中取出存储⽼师对象的⽂件,然后反序列化出⽼师对象,提示功能如下

import hashlib,uuid,pickle,time,json

class Teacher():
    def tell_info(self):
        print('id=%s, name=%s, age=%s' % (self.id, self.name, self.age))

    def save(self):
        with open(self.name + '.txt', 'wb') as f:
            pickle.dump(self, f)
            # json.dump(self, f,ensure_ascii=False)

    def get_obj_by_id(self):
        # print('11111111111')
        q=pickle.load(open(self.name + '.txt', 'rb'))
        # print(q.__dict__)
        print('get_obj_by_id:id=%s, name=%s, age=%s'%(q.id,q.name,q.age))
        # return ('get_obj_by_id:id=%s, name=%s, age=%s' % (self.id, self.name, self.age))

    def __init__(self, name, age):
        def create_id():
            md5=hashlib.md5()
            message=self.name+str(self.age)+str(time.time())
            # print(message)
            md5.update(message.encode('utf-8'))
            id=md5.hexdigest()
            # print(id)
            return id[:10]
        self.name = name
        self.age=age
        self.id=create_id()#+str(age)
        Teacher.tell_info(self)
        Teacher.save(self)
        Teacher.get_obj_by_id(self)



t1=Teacher("张三",45)
t1=Teacher("张四",40)
# print(print(t1.__dict__))
# t1.tell_info()
# print('id=%s, name=%s, age=%s'%(t1.id, t1.name, t1.age))#'tuple' object has no attribute 'id'
# print(t1.__dict__)

添加属性后,报错原因在注释中,修改即可

import hashlib,uuid,pickle,time,json

class Teacher():


    def __init__(self,name,sex, age,level,salary):
        def create_id():
            md5=hashlib.md5()
            message=self.name+self.sex+str(self.age)+self.level+str(self.salary)+str(time.time())#'Teacher' object has no attribute 'name'
            print(message)
            md5.update(message.encode('utf-8'))
            id=md5.hexdigest()
            # print(id)
            return id[:10]
        self.id=create_id()################################self.create_id()
        self.name=name
        self.age=age
        self.sex=sex
        self.level=level
        self.salary=salary
        Teacher.tell_info(self)
        Teacher.save(self)
        Teacher.get_obj_by_id(self)
    def tell_info(self):
        print('id=%s, name=%s,sex=%s, age=%s,level=%s,salary=%s' % (self.id, self.name, self.sex, self.age,self.level,self.salary))

    def save(self):
        with open(self.name + '.txt', 'wb') as f:
            pickle.dump(self, f)
            # json.dump(self, f,ensure_ascii=False)

    def get_obj_by_id(self):
        print('11111111111')
        q=pickle.load(open(self.name + '.txt', 'rb'))
        # print(q.__dict__)
        print('get_obj_by_id:id=%s, name=%s,sex=%s, age=%s,level=%s,salary=%s' %(q.id,q.name,q.sex, q.age,q.level,q.salary))
        # return ('get_obj_by_id:id=%s, name=%s, age=%s' % (self.id, self.name, self.age))


t1=Teacher('张三','男',45,'高级教师',10000)
# t1=Teacher("张四",40)
# print(print(t1.__dict__))
# t1.tell_info()
# print('id=%s, name=%s, age=%s'%(t1.id, t1.name, t1.age))#'tuple' object has no attribute 'id'
# print(t1.__dict__)

相关文章

网友评论

      本文标题:⽤⾯向对象的形式编写⼀个⽼师类, ⽼师有特征:编号、姓名、性别、

      本文链接:https://www.haomeiwen.com/subject/hnivrdtx.html