10 #### 继承

news/2024/11/18 9:27:24/文章来源:https://www.cnblogs.com/jhchena/p/18434877

继承

一定时刻知道,self是哪个类的对象。只要知道是哪个类的对象,就从哪个类开始进行查找

class  base: # 父类,也可称为基类pass
class Info(base): # 子类,也可称为派生类passclass  base: # 父类,也可称为基类def f1(self):print('f1')class Info(base): # 子类,也可称为派生类def f1(self):print('f2')
obj = Info()        
obj.f2()
obj.f1()
  • 案例1
class base:  # 父类,也可称为基类def f1(self):print('f1')
class Info(base): # 子类,也可称为派生类def f2(self):print('f2')obj = base()    #由base类创建的对象
obj.f1() # base.f1
obj.f2() # info.f2  报错,base类不能继承子类中的方法obj2 = Info()    #由base类创建的对象
obj2.f1() # base.f1
obj2.f2() # info.f2

  • 案例2
# 优先从自己里面查找,自己里面,在去父类查找
class base:  # 父类,也可称为基类def f1(self):print('f1')class Info(base): # 子类,也可称为派生类def f2(self):print('f2')def f1(self):print('f1')obj = base()    #由base类创建的对象
obj.f1() # base.f1
obj.f2() # info.f2  报错,base类不能继承子类中的方法obj2 = Info()    #由base类创建的对象
obj2.f1() # Info.f1
obj2.f2() # Info.f2

  • 案例3

重点,不要诊断self代指的就是当前类,一定要看self是谁?是哪个类创建的对象

class base:  # 父类,也可称为基类def f1(self):print('base.f1')def f2(self):print('base.f2')self.f1() # 相当于:obj1.f1 -> 先base类找f1class Info(base):  # 子类,也可称为派生类def f2(self):print('Info.f2')self.f1()def f1(self):print('Info.f1')obj1 = base()  # 由base类创建的对象
obj1.f1()  # base.f2 -> base.f1
# obj.f2从base类找:base.f2,发现找到了,找到后开始执行。先输出base.f2,后。
# 下句执行为self.f1(),此时当我们看到self时,一定想着说这个self是找表的当前的这个类吗
# 不是,self不是表示当前类,一定要看self是什么。 self本质上是一个参数,此时看是哪个在调用这个f2,分析发现是obj1调用的f2,此时我们看obj1是哪个类的对象
# 发现obj1是base 这个类的对象。所以此时的:self.f1() 相当于:obj1.f1() ,而obj1是base这个类中的对象,所以找f1时,先从base类中进行找f1,当前base类中是有f1
# 此时输出的:base.f1。obj2 = Info()  # 由base类创建的对象
obj2.f2()  # Info.f2 -> Info.f2

  • 案例4
    def handler(self):self.process()def process(self):print(123)class Mixin:def process(self):print(999)class ThreadingServer(Mixin, Server):passobj = ThreadingServer()  # obj = ThreadingServer 实例化对象
obj.run_server()  # 999# 一定时刻知道,self是哪个类的对象。只要知道是哪个类的对象,就从哪个类开始进行查找

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/804422.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03 对象到底是个啥?

对象到底是个啥? # 2. 基于面向对象的方式实现上述功能 # 定义类 class MessageInfo:# 方法def send_email(to, body):msg = f给{to}发送邮件,内容:{body}print(msg)# 方法def send_dingding(to, body):msg = f给{to}发送邮件,内容:{body}print(msg)# 方法def send_wechat…

04 特殊方法`__init__(self)`

特殊方法__init__(self) class MessageInfo:# 初始化方法def __init__(self, city):self.city = cityself.company = 联通# 方法def send_email(self, to, body):msg = f给{to}发送邮件,内容:{body}print(msg)# 方法def send_dingding(self, to, body):msg = f给{to}发送邮件…

2025 年度技术规划

• quant 无代码图书配代码 • 小说大纲批量提取 • gh高星代码注释和漏洞检测 • 反编译 1000+ apk • 至少一个游戏辅助 • 漫画翻译 • 玄学pdf转md • dao改造 • pmp • kaggle master

机器学习第7次作业

机器学习作业7 学号:102102156 姓名:高涛 1. 各个分类器的分类性能比较 1.1 代码1.2 绘制结果2.各个分类器的分类性能比较 2.1 代码2.2 绘制结果

.net系列-ClosedXML,ExcelWorksheet,Workbook.Worksheets或ExcelPackage如何导出表格?如何自动宽度,根据内容调整行高和列宽

问题描述本文介绍两种.net导出表格的方案在我们使用.net的表格工具的时候,导出表格的宽度和高度默认的总是很窄,字体都挤在一起,如何让它自适应呢?下面介绍两个库的自适应代码写法使用ClosedXML也就是XLWorkbook github文档: https://github.com/ClosedXML/ClosedXML using…

图文并茂手把手教你macOS 上安裝并运行 .NET8应用(.net6也可以用哦)

快速起步 官方网址:https://learn.microsoft.com/zh-tw/dotnet/core/install/macos版本选择 installer版本:它包含了所有必须文件和帮助文档等,执行exe文件通过弹出的指示即可以安装软件。 binary版本:它是一个二进制包,里面包括了编译好的可以直接使用的程序,只需要把它…

Lab4 记录

Part A:无快照的KVServers KVServer整体结构如下每个KvServer对应一个Raft Server,该Raft Server可能是Leader或FollowerClient向KVServer发送请求,如果该KVServer对应的Raft Server不是Leader,直接返回Error,Clerk向其他KVServer发起请求 KVServer将命令提交到Raft Leader…

leetcode322 零钱兑换

leetcode322 零钱兑换思路:分析可知这是一道完全背包问题,主要代码为 for (int j = 0; j < coins.length; j++) {if (coins[j] <= i) {dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);} }但是要注意边界情况的处理,首先dp[0]赋值为0,所有元素赋值为最大值+1,这样在…

企业数字化转型项目顶层规划方案

企业数字化转型项目顶层规划方案

2024秋软件工程结对作业(第一次之需求分析和原型设计)

软件工程课程 班级链接作业要求 作业链接作业目标 需求分析和原型设计学号 102201312队友 102201311张硕使用墨刀构建原型,原型链接:请点击我客户现实困扰 ​ 在大学里,一些有想法的学生希望通过发起或参与跨专业的项目(创业、学术)来提升自己的综合能力,拓宽知识面和积累…

软件工程第一次结对作业《福大Team》

软件工程课程 班级链接作业要求 作业链接作业目标 需求分析和原型设计学号 102201311队友 102201312陈言泷使用墨刀构建原型,原型链接:请点击我客户现实困扰 ​ 在大学里,一些有想法的学生希望通过发起或参与跨专业的项目(创业、学术)来提升自己的综合能力,拓宽知识面和积…

讲的好!!!

若有侵权,请联系删除!!!