当前位置:首页>python>小白学python第71天之Python中的继承(上)

小白学python第71天之Python中的继承(上)

  • 2026-09-02 20:29:48
小白学python第71天之Python中的继承(上)

2.16

Python中的继承(上)

?

学前疑问

你是不是也曾遇到过这样的困扰:当你想扩展现有类的功能时,发现复制粘贴大量代码后,一旦基础逻辑需要调整,就得在所有粘贴过的地方逐一修改,既繁琐又容易出错?

1

Python中的继承(上)

(1)什么是继承

我们接下来来聊聊Python代码中的“继承”:类是用来描述现实世界中同一组事务的共有特性的抽象模型,但是类也有上下级和范围之分,比如:生物 => 动物 => 哺乳动物 => 灵长型动物 => 人类 => 黄种人

从哲学上说,就是共性与个性之间的关系,比如:白马和马!所以,我们在OOP代码中,也一样要体现出类与类之间的共性与个性关系,这里就需要通过类的继承来体现。简单来说,如果一个类A使用了另一个类B的成员(属性和方法),我们就可以说A类继承了B类,同时这也体现了OOP中代码重用的特性!

(2)继承的基本语法

假设A类要继承B类中的所有属性和方法(私有属性和私有方法除外)

class B(object):    passclass A(B):    passa = A()a.B中的所有公共属性a.B中的所有公共方法

案例:

Person类与Teacher、Student类之间的继承关系

class Person(object):    def eat(self):        print('i can eat food!')    def speak(self):        print('i can speak!')class Teacher(Person):    passclass Student(Person):    passteacher = Teacher()teacher.eat()teacher.speak()student = Student()student.eat()student.speak()

(3)与继承相关的几个概念

继承:一个类从另一个已有的类获得其成员的相关特性,就叫作继承!

派生:从一个已有的类产生一个新的类,称为派生!

很显然,继承和派生其实就是从不同的方向来描述的相同的概念而已,本质上是一样的!

父类:也叫作基类,就是指已有被继承的类!

子类:也叫作派生类或扩展类

扩展:在子类中增加一些自己特有的特性,就叫作扩展,没有扩展,继承也就没有意义了!

单继承:一个类只能继承自一个其他的类,不能继承多个类,单继承也是大多数面向对象语言的特性!

多继承:一个类同时继承了多个父类, (C++、Python等语言都支持多继承)

(4)单继承

单继承:一个类只能继承自一个其他的类,不能继承多个类。这个类会有具有父类的属性和方法。

基本语法:

# 1、定义一个共性类(父类)class Person(object):    pass# 2、定义一个个性类(子类)class Teacher(Person):    pass

案例:

比如汽车可以分为两种类型(汽油车、电动车)

# 1、定义一个共性类(车类)class Car(object):    def run(self):        print('i can run')# 2、定义汽油车class GasolineCar(Car):    pass# 3、定义电动车class EletricCar(Car):    passbwm = GasolineCar()bwm.run()

(5)单继承特性:传递性

在Python继承中,如A类继承了B类,B类又继承了C类。则根据继承的传递性,则A类也会自动继承C类中所有属性和方法(公共)

class C(object):    def func(self):        print('我是c类中的相关方法func')class B(C):    passclass A(B):    passa = A()a.func()

2

编写面向对象代码中的常见问题

(1)问题1:

在定义类时,其没有遵循类的命名规则

答:在Python中,类理论上是不区分大小写的。但是要遵循一定的命名规范:首字母必须是字母或下划线,其中可以包含字母、数字和下划线,而且要求其命名方式采用大驼峰。

电动汽车:EletricCar

父类:Father

子类:Son

(2)问题2:

父类一定要继承object么?Car(object)

答:在Python面向对象代码中,建议在编写父类时,让其自动继承object类。但是其实不写也可以,因为默认情况下,Python中的所有类都继承自object。

(3)问题3:

打印属性和方法时,都喜欢用print

class Person():    def __init__(self, name):        self.name = name    def speak(self):        print('i can speak')# 创建对象,打印属性和方法p = Person('Tom')print(p.name)p.speak()

今日学习完毕,课后作业: 

动物声音模拟器,题目要求:

① 创建一个基类 Animal(动物)。

② 创建一个子类 Dog(狗),它继承自 Animal类。

③ 在 Animal类中定义一个 speak()方法,该方法打印:"动物发出声音..."。

④ 在 Dog类中重写 speak()方法,使其打印:"汪汪汪!"。

⑤ 在 main函数中,分别创建 Animal和 Dog的对象,并调用它们的 speak()方法,观察运行结果。

最新文章

随机文章