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

原文地址:https://www.cnblogs.com/josie930813/p/9883336.html