zoukankan      html  css  js  c++  java
  • 继承day20作业

    今日作业

    1、下面这段代码的输出结果将是什么?请解释。
    class Parent(object):
      	x = 1
    
    class Child1(Parent):
        pass
    
    class Child2(Parent):
        pass
    
    print(Parent.x, Child1.x, Child2.x)
    Child1.x = 2
    print(Parent.x, Child1.x, Child2.x)
    Parent.x = 3
    print(Parent.x, Child1.x, Child2.x)
    x = 1 x = 1 x = 1
    x = 1 x = 2 x = 1
    x = 3 x = 2 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.
        python2中,凡是没有继承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 pickle
    import hashlib
    import time
    from datetime import date,datetime
    
    class BaseClass(object):
        def __init__(self,name,sex,age):
            self.name = name
            self.sex = sex
            self.age = age
            self.create_id()
            self.save()
    
        def create_id(self):
            res = datetime.today().strftime('%Y-%m-%d %X')
            m = hashlib.md5()
            m.update(bytes(res,encoding='utf8'))
            self.id = str(m.hexdigest())+ str(self.name)+str(self.sex) + 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(BaseClass):
        def __init__(self,name,sex,age,level,salary):
            super().__init__(name,sex,age)
            self.level = level
            self.salary = salary
    
    
        def tell_info(self):
            print(super().get_obj_by_id().__dict__)
    
    class Student(BaseClass):
        def __init__(self,name,sex,age,course):
            super().__init__(name,sex,age)
            self.course = course
    
    t1 = Teacher('tank','female',93,1,100)
    print(t1.get_obj_by_id().__dict__)
    
    s1 = Student('slk','male',18,'python')
    print(s1.get_obj_by_id().__dict__)
    
    t1.tell_info()
    
    
    
  • 相关阅读:
    使用ServiceStackRedis链接Redis简介
    浅谈SQL SERVER中事务的ACID
    Sql Server查询性能优化之走出索引的误区
    Redis命令总结
    TSQL查询进阶—理解SQL Server中的锁
    SQL Server 2005 分区表实践——分区切换
    SQL Server Profiler 模板
    深入浅出SQL Server中的死锁
    不同的单元中的类可以共用同一个命名空间
    从硬盘上装xp手记(2005.8.14 )
  • 原文地址:https://www.cnblogs.com/shin09/p/11650276.html
Copyright © 2011-2022 走看看