news 2026/6/23 16:46:24

Python面向对象——进阶(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python面向对象——进阶(三)

一,继承

1,定义:通俗语言的将继承就是儿子继承父亲的。在面向对象里面。就是子类继承父类的属性和方法。

2,基本语法(私有属性和私有方法除外)

#定义父类 class A(object):#这个其实可以理解为也是一种继承。object基础类简称“基类” pass #定义子类 #在这里面子类B继承父类A class B(A): pass

案例:人类——>学生和老师

#定义父类 class Person(object):#这个其实可以理解为也是一种继承。object基础类简称“基类” def eat(self): print("我是人类,我要吃饭") def drink(self): print("我是人类,我要喝水") #创建学生子类 class student(Person): #占位符。没有任何功能。但可以保证程序正常运行 pass #创建教室类 class teacher(Person): # 占位符。没有任何功能。但可以保证程序正常运行 pass #类的实例化(创建对象)实例化学生类 s1 = student() #调用父类中的方法 s1.eat() s1.drink() #类的实例化(创建对象)实例化教师类 t1 = teacher() #调用父类的方法 #调用父类中的方法 t1.eat() t1.drink()

3,关于继承的几个基本概念

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

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

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

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

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

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

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

多继承:一个类同时继承了多个父类,

4,单继承

1>单继承:

#定义父类 #单继承 class Person(object): pass #创建学生子类 class student(Person): pass

2>多层继承:

#定义父类 class A(object): pass #B类继承A类 class B(A): pass #C类又继承B类 class C(B): pass

4,多继承:就是一个类可以继承多个父母类

#定义父类A class A(object): pass #定义父类B class B(object): pass #C类又继承A,B类 class C(A,B): pass

案例:

#定义父类A class A(object): def a(self): print('这是A类中的方法') #定义父类B class B(object): def b(self): print('这是B类中的方法') #C类又继承A,B类 class C(A,B): pass #todo 实例化对象。在这里实例化的是c c1 = C() #调用父类A中的方法,c继承A的方法 c1.a() #调用父类B中的方法。c继承B的方法 c1.b()

5.重写
定义:重写就是覆盖,子类继承父类的方法和属性。是当子类成员与父类成员名字相同的时候,从父类继承下来的成员会重新定义!

#创建父类 class Father(object): #属性 #方法 pass class son(object): #继承出父类的属性和方法 #自己的属性和方法 #todo 但是自己的属性和方法与父类的属性和方法名字一致时。这就是重写 pass

案例:

#以动物类示范 #1,首先,创建父类 class Anima(object): #创建父类的方法 def cell(self): print("动物都回发出声音") def eat(self): print("动物都需要吃东西") #2,创建猫的子类 class cat(Anima): #重写父类的方法。与父类的方法名字一样 def cell(self): print("哈吉米南北绿豆") #创建马的子类 class horse(Anima): # 重写父类的方法。与父类的方法名字一样 def cell(self): print("曼波!") #3创建对象 c1 = cat() h1 = horse() #4调用方法 c1.eat() c1.cell() h1.eat() h1.cell()

问题:如果子类重写了父类的方法,那么父类的方法还存在吗?

答:存在。因为:类调用的方法的顺序是从子类中寻找,以我的cat类举例子。我cat类中存在cell方法。所以会优先访问子类中cell。当我调用cat类的eat()方法时,在子类中没有找到。在调用父类中的eat()方法。

6,super()调用父类的属性和方法

作用:调用父类的属性和方法

完整写法:super().属性或super().方法名()

举例:

#以动物类示范 #1,首先,创建cat类 class cat(object): def __init__(self,color,name,age): self.color = color self.name = name self.age = age def active(self): print("哈吉米都会抓老鼠") #2,创建白猫的子类 class white_cat(cat): #重写父类的方法。与父类的方法名字一样 def active(self): print(f"我是一只名字叫{self.name}猫,我的颜色是{self.color},我今年{self.age}岁了") #创建黑猫的子类 class black_cat(cat): #给添加自己的属性同时继承父类的属性 def __init__(self, color, name, age,weight): super().__init__(color, name, age)#=self.color = color # self.name = name # self.age = age #体重属性。属于黑猫的自己属性 self.weight =weight def active(self): print(f"我是一只名字叫{self.name}猫,我的颜色是{self.color},我今年{self.age}岁了,我的体重是{self.weight}") #3创建对象 bm = white_cat("白色","白猫","5") hm = black_cat("黑色","黑猫","8","11") #4调用方法 bm.active() hm.active()

7,MRO属性和MRO方法

我们可以通过类名.__mro__类名.mro()获得“类的层次结构”,方法解析顺序也是按照这个“类的层次结构”寻找到。

#以动物类示范 #1,首先,创建cat类 class cat(object): def __init__(self,color,name,age): self.color = color self.name = name self.age = age def active(self): print("哈吉米都会抓老鼠") #2,创建白猫的子类 class white_cat(cat): #重写父类的方法。与父类的方法名字一样 def active(self): print(f"我是一只名字叫{self.name}猫,我的颜色是{self.color},我今年{self.age}岁了") #创建黑猫的子类 class black_cat(cat): #给添加自己的属性同时继承父类的属性 def __init__(self, color, name, age,weight): super().__init__(color, name, age)#=self.color = color # self.name = name # self.age = age #体重属性。属于黑猫的自己属性 self.weight =weight def active(self): print(f"我是一只名字叫{self.name}猫,我的颜色是{self.color},我今年{self.age}岁了,我的体重是{self.weight}") print(white_cat.__mro__) print(black_cat.mro())

今天没有作业哦。但本章节的代码都要自己手动敲写一遍哦!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 22:52:53

C语言实现图书管理系统[2025-12-17]

C语言实现图书管理系统[2025-12-17] 图书管理系统: 图书管理模块: 新增图书:录入图书编号、图书名称、作者、出版社、图书类型、库存数量,默认标记为“可借”状态; 删除图书:按图书编号删除图书信息&#…

作者头像 李华
网站建设 2026/6/23 16:17:42

LobeChat对话摘要自动生成实践

LobeChat对话摘要自动生成实践 在智能助手日益融入日常工作的今天,一个现实问题逐渐浮现:我们和AI聊得越多,留下的对话记录就越庞杂。一次长达数十轮的技术咨询、一场头脑风暴式的创作讨论,结束后往往难以快速回顾重点。如何让机器…

作者头像 李华
网站建设 2026/6/23 4:04:09

迈向价值透明:基于意义行为原生论的机器学习治理框架——一份人机协作的独立宣言

迈向价值透明:基于意义行为原生论的机器学习治理框架——一份人机协作的独立宣言作者:岐金兰与她的人机协作AI们摘要机器学习系统的“黑箱”特性,使其伦理治理陷入根本性困境:抽象、厚重的价值概念难以转化为可量化、可审计的工程…

作者头像 李华
网站建设 2026/6/23 16:15:51

企业级AI客服新选择:基于LobeChat镜像的智能对话系统搭建

企业级AI客服新选择:基于LobeChat镜像的智能对话系统搭建 在客户服务日益智能化的今天,越来越多企业开始尝试引入大语言模型(LLM)来提升响应效率、降低人力成本。然而,当“用ChatGPT做客服”成为一种流行设想时&#x…

作者头像 李华
网站建设 2026/6/23 16:21:46

LobeChat会员等级权益设计建议

LobeChat会员等级权益设计建议 在如今大语言模型(LLM)加速落地的背景下,AI聊天应用早已不再是极客手中的玩具,而是逐步成为企业服务、个人助手乃至教育工具的核心载体。用户不再满足于“能对话”,他们期待的是更智能、…

作者头像 李华
网站建设 2026/6/23 16:20:12

LobeChat版本更新日志解读:v0.8.5新增特性一览

LobeChat v0.8.5 版本深度解析:从交互界面到智能代理的演进 在大模型技术飞速普及的今天,一个现实问题日益凸显:尽管像 GPT、LLaMA 这样的语言模型能力强大,但它们对普通用户而言依然“难以亲近”。直接调用 API 需要编程基础&…

作者头像 李华