1 ''' 2 继承解释: 3 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法 4 之一是通过继承机制。 5 通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。 6 作用:为了简化代码量,更好的维护。 7 8 9 特点: 10 子类可以继承父类的所有属性及方法(私有属性/方法除外) 11 子类是可以直接使用父类的公有方法的。 12 子类是可以有自己独有的方法/属性。 13 14 注意: 15 __init__:当子类没有显式的init方法时,会调用父类的init方法。 16 当子类有显式的init方法时,会调用子类本身的init方法。 17 当子类有显式的init方法时,可能会导致父类中init方法中的内 18 容无效,在子类的init方法中调用父类的init函数,将父类中的 19 init函数中的内容继承下来,格式: 20 父类名称.__init__(self, 参数1,参数2...(参数个数与形参个数一致)) 21 22 函数/方法重写:在子类中有与父类同名的函数,并在子类中实现了该方法, 23 叫做方法的重写。 24 25 就近原则:当对象调用属性或方法时,先去自己本类=中查找,找到则 26 使用自己本类中的内容,本类中没有,再去父类中查找,一层一层向上查找, 27 如果本类及所有父类中都没有,则返回错误。 28 29 一个父类可以拥有多个子类。 30 31 ''' 32 ''' 33 语法格式: 34 class 类名(父类): 35 属性 36 方法 37 ''' 38 # Cat color age miao eat() zhuolaoshu() 39 # Dog color age wang eat() kanjia() 40 # Animal color age eat() 41 42 '_Cat__an' 43 44 # 父类 45 class Animal(): 46 def __init__(self, color, age): 47 self.color = color 48 self.age = age 49 self.__an = "1000" 50 def eat(self): 51 # print(self.__an) 52 print("吃饭") 53 def __body(self): 54 print("身体") 55 56 class Cat(Animal): 57 def __init__(self, color, age, miao): 58 # self.color = color 59 # self.age = age 60 # 调用父类的init方法: 61 # 语法格式: 父类名称.__init__(self, 参数1,参数2...(参 62 # 数个数与形参个数一致)) 63 # 类似将父类的init方法中的所有内容复制并执行 64 Animal.__init__(self, color, age) 65 # 子类独有的属性 66 self.miao = miao 67 68 def eat(self): 69 # print("吃饭") 70 # 在子类中执行父类的方法 71 # 语法格式: 父类名称.函数名(self, 参数1,参数2...(参 72 # 数个数与形参个数一致)) 73 Animal.eat(self) 74 75 print(self.miao + "吃饭") 76 77 # 子类独有的方法 78 def zhuolaoshu(self): 79 # print(self.color) 80 print("猫捉老鼠") 81 82 cat1 = Cat("白色", 10, "喵喵") 83 # print(cat1.color) 84 # print(cat1.age) 85 # print(cat1.miao) 86 cat1.eat() 87 # cat1.zhuolaoshu() 88 89 90 class Dog(Animal): 91 def __init__(self, color, age, wang): 92 # self.color = color 93 # self.age = age 94 Animal.__init__(self, color, age) 95 self.wang = wang 96 def eat(self): 97 Animal.eat(self) 98 print(self.wang + "吃饭") 99 def kanjia(self): 100 print("狗狗看家") 101 dog1 = Dog("aaa", 12, "wwww") 102 print(dog1.color, dog1.age, dog1.wang) 103 dog1.eat() 104 dog1.kanjia() 105 # cat1 = Cat("白色", 12, "喵喵") 106 # dog1 = Dog("黑色", 8, "汪汪") 107 # cat1.eat() 108 # cat1.zhuolaoshu() 109 # dog1.eat() 110 # dog1.kanjia() 111 112 113 """ 114 object:所有类的父类:如果没有object,那么可能所有的类都不 115 存在。我们所创建的所有的类,默认都继承于object。如果我们创 116 建的class,就是继承于object,那么object写或不写没有区别。 117 """ 118 119 # class Person: 120 # pass 121 # class Person(): 122 # pass 123 124 class Person(object): 125 pass