zoukankan      html  css  js  c++  java
  • Python基础22类-继承

    1.继承的两种含义: 

      含义一,继承基类的方法,并且做成自己饿改变或者扩展(代码重用),一般很少用到,不利于维护。

    #含义一,eg
    class Animal:
        def __init__(self,color,name):
            self.color = color
            self.name = name
        def call(self):
            print('')
    
    class cat(Animal):
        def call(self):
            print('喵喵叫')
    
    class dog(Animal):
        def call(self):
            print('汪汪叫')
    c = cat('black','baby')
    print(c.name)
    c.call()
    d = dog('black','pupy')
    print(d.name)
    d.call()

      含义二,声明某个自雷兼容与某基类,定义一个接口类,子类继承接口类,并且实现接口中定义的方法。

    #含义2,eg,用abc模块,如果继承的类没实现abc.stractmethod方法,则报错
    import abc
    class file(metaclass=abc.ABCMeta):
        @abc.abstractmethod
        def read(self):
            pass
        @abc.abstractmethod
        def write(self):
            pass
    
    class memery(file):
        def read(self):
            print('read....')
        def write(self):
            print('write...')
    m1 = memery()
    m1.read()

    2.在子类中调用父类的方法

    class Vehicle:
        Country = 'China'
        def __init__(self,name,speed,load,power):
            self.name = name
            self.speed = speed
            self.load = load
            self.power = power
        def run(self):
            print('开动啦')
    class Subway(Vehicle):
        def __init__(self,name,speed,load,power,line):
            Vehicle.__init__(self,name,speed,load,power)
            self.line = line
        def run(self):
            print('%s%d号线开动啦'%(self.name,self.line))
    s1 = Subway('地铁','80km/h',20000,50,6)
    s1.run()

     3.继承的顺序

       #1.新式类:python3创建的类都是新式类,pyhton2 创建方式为 class Foo(object): 为新式类
      #2.经典类:python2中创建类的方式是 class Foo(): 为经典类
      #当一个类继承多个父类时,继承顺序分为深度继承跟广度继承,新式类为广度优先继承,经典类为深度优先继承
      #新式类都可以调用__mro__的方法查看继承顺序
      #经典类继承的方式为:假如B,C继承A,D继承B,E继承C,F继承D,E,则根据深度优先,继承顺序为F->D->B->A->E->C
      #新式类的继承方式为:假如B,C继承A,D继承B,E继承C,F继承D,E,则根据广度优先,继承顺序为F->D->B->E->C->A

  • 相关阅读:
    设计模式之里氏替换原则
    设计模式之依赖倒转原则
    设计模式之接口分离原则
    spring 集成 kafka producer(KafkaTemplate)
    jmeter 分布式
    ant+Jenkins+jmeter
    pycharm+git+github项目上传
    Python_pip下载不下来源解决方案
    linux_python3环境搭建
    Jenkins+Git+Github+Python自动化化接口项目例子
  • 原文地址:https://www.cnblogs.com/josie930813/p/9883336.html
Copyright © 2011-2022 走看看