Python类继承

Python类继承教程

继承是面向对象的三大特征之一,也是实现代码复用的重要手段。继承经常用于创建和现有 功能类似的新类,又或是新类只需要在现有类基础上添加一些 属性方法,但又不想直接将现有类代码复制给新类。

Python 中,实现继承的类称为子类,被继承的类称为父类(也可称为基类、超类),子类继承父类的语法是:在定义子类时,将父类放在子类之后的圆括号里。

Python 中支持多继承,也就是一个类可以继承多个类,一个类继承多个类的语法是:在定义子类时,将多个父类一起放在子类之后的圆括号里,之间以逗号分隔,虽然 Python 支持多继承,但不推荐使用多继承,因为多继承大大增加了程序的复杂性。

如果在定义一个 Python 类时,并未显式指定这个类的直接父类,则这个类默认继承 object 类,也就是说 object 类是所有类的父类,要么是直接父类,要么是间接父类。

Python类继承好处

类继承是实现代码复用的重要手段,也就是说子类可以使用父类的属性和方法,子类不必自己再定义一套。

Python类单继承详解

语法

class ChildClass(SuperClass): pass

说明

定义了一个类 ChildClass,ChildClass 继承自 SuperClass。

Python类多继承详解

语法

class ChildClass(SuperClass, SuperClass2): pass

说明

定义了一个类 ChildClass,ChildClass 继承自 SuperClass 和 SuperClass2。

案例

Python类单继承

单继承,就是子类只继承一个父类

print("嗨客网(www.haicoder.net)") class Person: def __init__(self, name, age): self.name = name self.age = age def info(self): print("Name =", self.name, "Age =", self.age) class Student(Person): pass stu = Student("HaiCoder", 18) stu.info()

程序运行后,控制台输出如下:

80_python类继承.png

我们定义了一个 Person 类,Person 类有两个属性,分别为 name 和 age 和一个 info 方法,用于输出 Person 类实例的 name 和 age 属性的值。

接着,我们定义了一个 Student 类,Student 类继承自 Person 类,Student 类本身没有任何的属性和方法,最后我们实例化了一个 Student 类,并且调用了 info 方法。

我们看到,程序成功输出了 Student 类实例 stu 的属性值。Student 类本身没有 name 和 age 属性,也没有 info 方法,但 Student 类从 Person 类继承了 name 和 age 属性,以及 info 方法。

Python类多继承

多继承,就是子类继承多个父类

print("嗨客网(www.haicoder.net)") class Person: def __init__(self, name, age): self.name = name self.age = age class Job: def __init__(self, job, salary): self.__job = job self.__salary = salary def setjob(self, val): self.__job = val def getjob(self): return self.__job job = property(getjob, setjob) def setsalary(self, val): self.__salary = val def getsalary(self): return self.__salary salary = property(getsalary, setsalary) class Teacher(Person, Job): def info(self): print("Name =", self.name, "Age =", self.age, "Job =", self.job, "Salary =", self.salary) teacher = Teacher("HaiCoder", 18) teacher.job = "Teach" teacher.salary = 3500 teacher.info()

程序运行后,控制台输出如下:

81_python类继承.png

我们定义了一个 Person 类,Person 类有两个属性,分别为 name 和 age 和一个 构造函数。接着,我们又定义了一个 Job 类,Job 类有两个属性,分别为 job 和 salary。

最后,我们定义了一个 Teacher 类,Teacher 类继承自 Person 类和 Job 类,并且自己只有一个 info 函数,用于输出 Teacher 类的实例信息。

在实例化 Teacher 时,我们设置了 Teacher 类的 name、age、job 和 salary 四个属性,同时调用了 info 方法输出了实例信息。 我们看到,程序成功输出了 Teacher 类实例 teacher 的属性值。

Teacher 类本身没有任何的属性,但是 Teacher 从 Person 类继承了 name 和 age 属性,从 Job 类继承了 job 和 salary 属性。

Python类继承总结

Python 中支持多继承,也就是一个类可以继承多个类,一个类继承多个类的语法是:在定义子类时,将多个父类一起放在子类之后的圆括号里,之间以逗号分隔,虽然 Python 支持多继承,但不推荐使用多继承,因为多继承大大增加了程序的复杂性。

如果在定义一个 Python 类时,并未显式指定这个类的直接父类,则这个类默认继承 object 类,也就是说 object 类是所有类的父类,要么是直接父类,要么是间接父类。Python 类单继承语法:

class ChildClass(SuperClass): pass

Python 类多继承语法:

class ChildClass(SuperClass, SuperClass2): pass