# 面向对象的三大特性:封装,继承,多态 # 继承的影响:资源的继承,资源的使用,资源的覆盖,资源的累加 # 资源的继承,在Python中的继承是指能使用父类的资源,而不是说在子类也复制一份父类代码到子类中 class Animate: a = 1 # 公有的资源 _b = 2 # 受保护的资源 __c = 3 # 私有的资源 def t1(self): print("t1") def _t2(self): print("t2") def __t3(self): print("t3") # 内置方法 def __init__(self): print("init , Animate") class Person(Animate): def test(self): print(self.a) print(self._b) # print(self.__c) #访问父类私有的资源会有错误 self.t1() self._t2() # self.__t3() #访问父类私有的资源会有错误 p = Person() print(p.test()) Animate.a = 100 # 设置个类属性值,下面看a的值是否有变化,如果是变化的,代表只是有Animate的使用权 p.test() # 资源的使用:(继承的形态:单继承,无重叠的多继承,有重叠的多继承) print(Person.mro()) # --------------------- 多态 (python 没有真正意思上的多态,也不需要多态 ------------------------------- class Animal(): def speaker(self): pass class Dog(Animal): def speaker(self): print("wangwang") class Cat(Animal): def speaker(self): print("miaomiao") def test(obj): obj.speaker() d = Dog() c = Cat() test(d) test(c) # --------------------- 抽象类 和 抽象方法 -------------------------- import abc class Animal(object, metaclass=abc.ABCMeta): @abc.abstractmethod def speaker(self): pass class Dog(Animal): def speaker(self): print("wangwang") pass class Cat(Animal): def speaker(self): print("miaomiao") def test(obj): obj.speaker() d = Dog()