10 #### 继承

news/2024/9/27 6:22:05

继承

一定时刻知道,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.ryyt.cn/news/65248.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

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

文件上传

1、准备工作对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的。 一般采用Apache的开源工具common-fileupload这个文件上传组件。 common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。我们下载最新的jar包:common-fileupload :https://m…

java web

1、基本概念 1.1、web开发: web开发:web,网页的意思,www.baidu.com 静态webhtml,css 提供给所有人看的数据始终不会发生变化!动态web淘宝,几乎是所有的网站 提供给所有的人看的数据始终会变化,每个人在不同的时间,不同的地点看到不同的信息 技术栈:Servlet/Jsp,ASP,…

机器学习第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版本:它是一个二进制包,里面包括了编译好的可以直接使用的程序,只需要把它…