码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-03-22 19:28:37      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:父类   cme   self   int   abs   没有   pytho   复制   import   

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

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

#   资源的继承,在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 面向对象的三大特性:封装,继承,多态

标签:父类   cme   self   int   abs   没有   pytho   复制   import   

原文地址:https://www.cnblogs.com/delphiclub/p/8625397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!