zoukankan      html  css  js  c++  java
  • 2019.10.10作业

    今日作业

    1、下面这段代码的输出结果将是什么?请解释。
    class Parent(object):
      	x = 1
    
    class Child1(Parent):
        pass
    
    class Child2(Parent):
        pass
    
    print(Parent.x, Child1.x, Child2.x)
    >>>1 1 1
    #Parent属性字典中的x=1,所以打印1
    #Child1自己的属性字典为空,去父类的属性字典中查找属性x=1
    #Child2自己的属性字典为空,去父类的属性字典中查找属性x=1
    Child1.x = 2
    print(Parent.x, Child1.x, Child2.x)
    >>>1 2 1
    #Parent属性字典中的x=1,,所以打印1
    #Child1在自己的属性字典中已经添加了x=2,所以输入2
    #Child2自己的属性字典为空,去父类的属性字典中查找属性x=1
    Parent.x = 3
    print(Parent.x, Child1.x, Child2.x)
    >>>3 2 3
    #更改了父类中属性字典中的值
    #Parent属性字典中的x已经变为3,所以打印3
    #Child1在自己的属性字典中已经添加了x=2,所以输入2
    #Child2自己的属性字典为空,去父类的属性字典中查找属性x=3
    
    
    2、多重继承的执行顺序,请解答以下输出结果是什么?并解释。
    		class A(object):
    		   def __init__(self):
    		       print('A')
    		       super(A, self).__init__()
    
    		class B(object):
    		   def __init__(self):
    		       print('B')
    		       super(B, self).__init__()
    
    		class C(A):
    		   def __init__(self):
    		       print('C')
    		       super(C, self).__init__()
    
    		class D(A):
    		   def __init__(self):
    		       print('D')
    		       super(D, self).__init__()
    
    		class E(B, C):
    		   def __init__(self):
    		       print('E')
    		       super(E, self).__init__()
    
    		class F(C, B, D):
    		   def __init__(self):
    		       print('F')
    		       super(F, self).__init__()
    
    		class G(D, B):
    		   def __init__(self):
    		       print('G')
    		       super(G, self).__init__()
    
    		if __name__ == '__main__':
    		   g = G()
    		   f = F()
    G D A B
    F C B D A
    玄学
    3、什么是新式类,什么是经典类,二者有什么区别?什么是深度优先,什么是广度优先?
    新式类:类名后括号调用(Object)的类是新式类,Python3中类名后无括号隐式调用(Object),所以Python3中的类都是新式类
    经典类:只在Python2中出现,定义时类名后无括号的类
    深度优先:搜索时沿从左到右,第一个分支搜索到除object下的最顶级父类,然后依次向右搜索
    广度优先:搜索时沿从左到右,第一个分支搜索到除object下的最顶级父类的子类,然后依次向右搜索,最后搜索最顶级父类
    4、用面向对象的形式编写一个老师类, 老师有特征:编号、姓名、性别、年龄、等级、工资,老师类中有功能。
    		1.生成老师唯一编号的功能,可以用hashlib对当前时间加上老师的所有信息进行校验得到一个hash值来作为老师的编号
    			def create_id(self):
    				pass
          
    		2.获取老师所有信息
    			def tell_info(self):
    				pass
    
    		3.将老师对象序列化保存到文件里,文件名即老师的编号,提示功能如下
    			def save(self):
    				with open('老师的编号','wb') as f:
    					pickle.dump(self,f)
    
    		4.从文件夹中取出存储老师对象的文件,然后反序列化出老师对象,提示功能如下
    			def get_obj_by_id(self,id):
    				return pickle.load(open(id,'rb'))
    
    		5、按照定义老师的方式,再定义一个学生类
        
    
    6、抽象老师类与学生类得到父类,用继承的方式减少代码冗余
    
    

    下面是抄的

    import hashlib
    import pickle
    import time
    
    
    hash = hashlib.md5()
    
    
    class Person:
        def __init__(self, name, gender, age):
            self.name = name
            self.gender = gender
            self.age = age
            self.create_id()
            self.save()
    
        def create_id(self):
            t_time = str(time.time())
            hash = hashlib.md5()
            hash.update(bytes(t_time, encoding='utf-8'))
            self.id = hash.hexdigest() + self.name + self.gender + str(self.age)
            self.save()
    
        def save(self):
            with open(self.id, 'wb') as f:
                pickle.dump(self, f)
    
        def get_obj_by_id(self):
            return pickle.load(open(self.id,'rb'))
    
    class Teacher(Person):
        def __init__(self,name,gender,age,level,salary):
            super().__init__(name,gender,age)
            self.level = level
            self.salary = salary
    
        def tell_info(self):
            print(super().get_obj_by_id().__dict__)
    
    
    class Student(Person):
        def __init__(self,name,gender,age,course):
            super().__init__(name,gender,age)
            self.course = course
    
        def tell_info(self):
            print(super().get_obj_by_id().__dict__)
    
    
    
    tea1 = Teacher('daqiao','female',18,'6','30000')
    tea1.tell_info()
    stu1 = Student('agsol','male',18,'swim')
    stu1.tell_info()
    
    
  • 相关阅读:
    【PQ】学会逆透视、透视,专治表格多行并一行,一行拆多行【分分合合几时休,学会了马上休】
    【Pandas】concat拼接,plan shapes are not aligned列标号不一致问题
    【MySQL】Pivot功能 一行拆多行等
    【PowerQuery】制作年底倒计时提醒
    数据分析师8大能力
    【爬虫基础】如何查看网页编码
    Mysql 插入中文错误:Incorrect string value: 'xE7xA8x8BxE5xBAx8F...' for column 'course' at row 1
    【MySQL】日期函数、时间函数总结
    mysql相关问题总结
    2020年 10月17 日 我遇见了一个很好的,善解人意的女孩
  • 原文地址:https://www.cnblogs.com/agsol/p/11650116.html
Copyright © 2011-2022 走看看