Python之类的继承

一、基本语法

class ClassName(baseclasslist):
	statement   #(类的主体)

参数说明:

  • ClassName:用于指定类名
  • baseclasslist:用于指定要继承的基类(父类),可以有多个,类名之间用逗号’,'隔开。如不指定,默认使用所有Python对象的根类object
  • satement:类体,主要由类变量(或类成员)、方法、属性等定义语句组成。如果定义类时,没有想好类的具体功能时,可以在类体中使用Pass语句代替。

二、方法重写

基类的所有成员(属性、方法)都会被派生类继承。当基类中的某个方法不完全适用于派生类时,就要在派生类中重写父类的这个方法。

1、派生类中的构造函数,init()方法的重写

  • 当派生类中没有重写__init__()方法时,派生类中的构造函数就是基类的构造函数,即创建派生类的对象时自动调用基类的构造函数
#基类
class Fruit:
    def __init__(self, color='绿色'):
        self.color = color

    def harvest(self):
        print("水果原来是:" + self.color + "的")

#派生类
class Apple(Fruit):
    pass

apple = Apple()   #此时创建apple对象时自动调用Fruit类的构造函数
apple.harvest()   #水果原来是绿色的
  • 当派生类重写了__init__()方法时,由于一个类中只有一个构造函数,所以此时派生类中的构造函数为重写的__init__()方法,而不是基类中的构造函数。
class Fruit:
    def __init__(self, color='绿色'):
        self.color = color

    def harvest(self):
        print("水果原来是:" + self.color + "的")

class Apple(Fruit):
    def __init__(self, color='红色'):
    	print("这是Apple类的构造函数")
        self.color = color
        
apple = Apple()   #此时apple对象调用的是重写的构造函数
apple.harvest()   #这是Apple类的构造函数 水果原来是红色的
  • 当派生类重写了构造函数但是还想继承(调用)父类中的__init__()方法时,需要用super()函数来调用
class Fruit:
    def __init__(self, color='绿色'):
        self.color = color

    def harvest(self):
        print("水果原来是:" + self.color + "的")

class Apple(Fruit):
    def __init__(self, color='红色'):
        self.color = color
        print("这是Apple类的构造函数")
        super().__init__()

apple = Apple()   #此时apple对象调用的是重写的构造函数
apple.harvest()   #这是Apple类的构造函数 水果原来是绿色的

注意由于super().init()在self.color=color之后,所以最后类中color属性为绿色。

你可能感兴趣的:(python,python)