zoukankan      html  css  js  c++  java
  • 课后作业 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'))
    
  • 相关阅读:
    sleep、yield、wait、join的区别
    Java 配置全局线程池出错
    RemoteFallbackFactory扫包:No fallbackFactory instance of type class
    JAVA CopyOnWriteArrayList 说明
    Java四种线程池
    jvm总结
    CompletableFuture基本用法【转】
    Visual Studio 当前不会命中断点的问题
    安聊系统1.0发布
    libvpx编译
  • 原文地址:https://www.cnblogs.com/samoo/p/11650485.html
Copyright © 2011-2022 走看看