课后作业 day20

今日作业 day20

1、下面这段代码的输出结果将是什么?请解释。
class Parent(object):
    x = 1

class Child1(Parent):
    pass

class Child2(Parent):
    pass

print(Parent.x, Child1.x, Child2.x)
#1,1,1  类中没有该属性,就会去父类中找,child1和child2都是Parent的子类,因此都可以调用Parent中的x

Child1.x = 2
print(Parent.x, Child1.x, Child2.x)
#1,2,1  Child1.x=2 就等于在Child1中创建了一个x属性,寻找的时候优先找自己的属性

Parent.x = 3
print(Parent.x, Child1.x, Child2.x)
#3,2,3  Parent.x=3将原先的值修改为3,因为Child1中本身就有了x属性,只会找自己的x,Child2则会找到Parent中被修改值后的x

2、多重继承的执行顺序,请解答以下输出结果是什么?并解释。
            
#G->D->A->B
#F->C->B->D->A
#新式类遵循广度优先


3、什么是新式类,什么是经典类,二者有什么区别?什么是深度优先,什么是广度优先?

#新式类:继承object的类都被称之为新式类
#经典类:在python2中,凡是没有继承object的类都是经典类
#深度优先:从第一类开始,一直找到该最后一个父类
#广度优先:不找多各类最后继承的同一个类,直接去找下一个父类

4、用面向对象的形式编写一个老师类, 老师有特征:编号、姓名、性别、年龄、等级、工资,老师类中有功能。

import datetime
import hashlib
import pickle

class Common():
    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age =age
        
    def save(self):
        with open(f'{self.id}.pkl', 'wb') as f:
            pickle.dump(self, f)

    def get_obj_by_id(self,id):
        return pickle.load(open(f'{id}.pkl', 'rb'))

class Teacher(Common):
    def __init__(self, name, sex, age, level, salary):
        super().__init__(name, sex, age)
        self.level =level
        self.salary = salary

    def create_id(self):
        m = hashlib.md5()
        m.update(f'{datetime.datetime.now()}'.encode('utf8'))
        m.update(self.name.encode('utf8'))
        m.update(self.sex.encode('utf8'))
        m.update(self.age.encode('utf8'))
        m.update(self.level.encode('utf8'))
        m.update(self.salary.encode('utf8'))
        self.id = m.hexdigest()


    def tell_info(self):
        print(f'姓名:{self.name}')
        print(f'性别:{self.sex}')
        print(f'年龄:{self.age}')
        print(f'等级:{self.level}')
        print(f'薪资:{self.salary}')
        
class Student(Common):
    def __init__(self, name, sex, age):
        super().__init__(name, sex, age)
        
    def create_id(self):
        m = hashlib.md5()
        m.update(f'{datetime.datetime.now()}'.encode('utf8'))
        m.update(self.name.encode('utf8'))
        m.update(self.sex.encode('utf8'))
        m.update(self.age.encode('utf8'))
        self.id = m.hexdigest()

    def tell_info(self):
        print(f'姓名:{self.name}')
        print(f'性别:{self.sex}')
        print(f'年龄:{self.age}')

tea1 = Teacher('smile', 'male', '18', '9', '4')
tea1.tell_info()
tea1.create_id()
tea1.save()
print(tea1.get_obj_by_id('a451ea41e5ef41149f50db942f8a0bc4'))

stu1 = Student('momo','female','24')
stu1.tell_info()
stu1.create_id()
stu1.save()
print(stu1.get_obj_by_id('a451ea41e5ef41149f50db942f8a0bc4'))

猜你喜欢

转载自www.cnblogs.com/samoo/p/11650485.html