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()
    
  • 相关阅读:
    poj 3068 Bridge Across Islands
    XidianOJ 1086 Flappy v8
    XidianOJ 1036 分配宝藏
    XidianOJ 1090 爬树的V8
    XidianOJ 1088 AK后的V8
    XidianOJ 1062 Black King Bar
    XidianOJ 1091 看Dota视频的V8
    XidianOJ 1098 突击数论前的xry111
    XidianOJ 1019 自然数的秘密
    XidianOJ 1109 Too Naive
  • 原文地址:https://www.cnblogs.com/YajunRan/p/11650343.html
Copyright © 2011-2022 走看看