Python 面向对象的三大特性:封装,继承,多态

Posted delphiclub

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 面向对象的三大特性:封装,继承,多态相关的知识,希望对你有一定的参考价值。

#   面向对象的三大特性:封装,继承,多态

#   继承的影响:资源的继承,资源的使用,资源的覆盖,资源的累加

#   资源的继承,在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()

 

以上是关于Python 面向对象的三大特性:封装,继承,多态的主要内容,如果未能解决你的问题,请参考以下文章

Python 面向对象的三大特性:封装,继承,多态

Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

继承 多态 封装 Python面向对象的三大特性

Python学习之旅---多态(类的相关知识,面向对象三大特性:继承-多态-封装)

面向对象的三大特性:继承封装多态

Python 面向对象(创建类和对象,面向对象的三大特性是指:封装继承和多态,多态性)