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

    lass Parent(object):
      	x = 1
    
    class Child1(Parent):
        pass
    
    class Child2(Parent):
        pass
    
    print(Parent.x, Child1.x, Child2.x)
    # 结果:1, 1, 1
    # 子类若没有相应属性,回去父类查找
    Child1.x = 2
    print(Parent.x, Child1.x, Child2.x)
    # 结果:1, 2, 1
    # 只是修改了子类的属性,不会影响父类的属性
    
    Parent.x = 3
    print(Parent.x, Child1.x, Child2.x)
    # 结果:3, 3, 3
    # 修改了父类的属性,会影响子类属性的查找
    
    
    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()
    #结果 GDAB 
       f = F()
    #结果 FCBDA
    
    

    新式类就是继承object的类,在python2中没有继承object的类都是经典类。
    深度优先是指在属性查找时,由一个父类开始,一直向上查找,直至继承树的顶层,同时遵循从左到右的查找循序。
    广度优先是指先在查找某个父类时,先查看是否已经查找过其子类,若没有则后面再查找,同时遵循从左到右的查找循序

    
    import time
    import hashlib
    import pickle
    class Pepole():
        def __init__(self, name, age, sex):
            self.name = name
            self.sex = sex
            self.age = age
            self.id = self.create_id()
        def tell_info(self):
            print(f"姓名:{self.name}, 年龄:{self.age}, 性别:{self.sex}, 编号:{self.id}")
        def create_id(self):
            value = self.name + self.sex + str(self.age) + str(time.time())
            md5 = hashlib.md5()
            md5.update(value.encode("utf-8"))
            return md5.hexdigest()
        def save(self):
            with open(f"{self.id}", "wb") as f:
                pickle.dump(self, f)
        def get_obj_by_id(self, id):
            return pickle.load(open(id, "rb"))
    
    class Teacher(Pepole):
        def __init__(self, name, age, sex, grade, salary):
            Pepole.__init__(self, name, age, sex)
            self.grade = grade
            self.salary = salary
        def tell_info(self):
            Pepole.tell_info(self)
            print(f"等级:{self.grade}, 工资:{self.salary}")
    
    class Student(Pepole):
        def __init__(self, name, age, sex, _class):
            Pepole.__init__(self, name, age, sex)
            self._class = _class
        def tell_info(self):
            Pepole.tell_info(self)
            print(f"班级:{self._class}")
    
    
    
    if __name__ == "__main__":
        t1 = Teacher("nick", 18, "male", 9, 3.0)
        t1.tell_info()
        cc = t1.get_obj_by_id("c9673f7e22eec273ad01850a82cfe01f")
        cc.tell_info()
        st1 = Student("abc", 17, "male", 12)
        st1.tell_info()
    
  • 相关阅读:
    C语言基础10
    swift笔记06
    C语言基础09
    C语言基础08
    C语言基础07
    C语言基础06
    swift笔记05
    Swift笔记4
    C语言基础05
    [转]一个清华计算机博士生的退学申请
  • 原文地址:https://www.cnblogs.com/YajunRan/p/11650343.html
Copyright © 2011-2022 走看看