Python 面向对象编程笔记:中级面向对象
__super__()
- 在 Python 中,super 是一个内置函数,用于调用父类方法。
- 该函数可以在子类中调用父类中被重写的方法,从而实现对父类方法的继承并且进行扩展。它能够动态地查找当前子类继承链中的下一个类,从而允许设计者更加灵活地组织代码。
- 简单案例
简单案例
class FATHER:def status(self):print('FATHER is in status zero')class SON(FATHER):def status(self):super().status()print('SON is in status zero')s = SON()
s.status()
FATHER is in status zero
SON is in status zero
>>>
调用与重写
class FATHER:def __init__(self,name):self.name = namedef status1(self):print("{} is in status1...".format(self.name))class SON(FATHER):def __init__(self,name,arg1):super().__init__(name)self.arg1 = arg1def status1(self):super().status1()print("{} is in status1 with args {} ".format(self.name,self.arg1))d = SON("SOMEWHERE", "CQ:UNKNOWN")
d.status1()
SOMEWHERE is in status1...
SOMEWHERE is in status1 with args CQ:UNKNOWN
__repr__
- repr函数是一个内置函数,用于将对象转换为供解释器读取的形式。通常情况下,repr函数返回的字符串应该是一个可以用来重新创建该对象的字符串表达式。
简单示例
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return f"Person name={self.name}, age={self.age}"p = Person("River Chandler", 20)
print(repr(p))
Person name=River Chandler, age=20
容器类
- 容器类是指可以包含其他对象的类,例如列表、元组、字典等
- 容器案例
class MyList:#初始化def __init__(self, *args):self.data = list(args)#返回列表的长度def __len__(self):return len(self.data)#按下标访问元素的功能def __getitem__(self, index):return self.data[index]#设置元素def __setitem__(self, index, value):self.data[index] = value#删除元素def __delitem__(self, index):del self.data[index]#迭代列表def __iter__(self):return iter(self.data)#判断元素是否存在def __contains__(self, value):return value in self.datamylist = MyList(1,2,3,4)
#类型
print(type(mylist))#长度
print(len(mylist)) #索引
print(mylist[0]) #设置
mylist[0] = 0
print(mylist[0]) #删除
del mylist[0]
print(len(mylist))#迭代
for item in mylist:print(item) #判断存在
print(2 in mylist)
print(0 in mylist)
<class '__main__.MyList'>
4
1
0
3
2
3
4
True
False
call函数
- call触发案例
class FATHER:def __init__(self,name):self.name = namedef __call__(self,msg):print('{}CLASS in STATUS: {}'.format(self.name,msg))a = FATHER("HARRY")
a("STATUS ONE")
HARRYCLASS in STATUS: STATUS ONE
>>>
issubclass
- 用于判断第一个参数是否是第二个参数的子类
class FATHER:passclass SON(FATHER):passprint(issubclass(SON,FATHER))
__del__
- 简单案例
class FATHER:def __init__(self,name):self.name = namedef __del__(self):try:print("del "+str(self.name))except:print("del "+"no attribute self.name")a = FATHER("a")
b = FATHER("b")
del a.name
del a
del b
del no attribute self.name
del b
>>>
__enter__和__exit__
- with as语句块
- 执行with as语句时,__enter__函数会被调用
- 执行with as语句完毕以后,__exit__函数会被调用
class MyClass:def __enter__(self):print("__enter__ is called!")def __exit__(self,type,value,trace):print("__exit__ is called!")M = MyClass()
with M as m:pass
__enter__ is called!
__exit__ is called!
>>>
组合
-
在一个类中以另外一个类的对象作为数据属性
-
其实区别也不太,很符合直觉地
class People():school = 'SH'def __init__(self,name,age,gender):self.name = nameself.age = ageself.gender = genderclass Teacher(People):def __init__(self,name,age,gender):super().__init__(name,age,gender)print("Teacher is built")class Course():def __init__(self,name,credit,semester):self.name = nameself.credit = creditself.semester = semesterelectrodynamics = Course('electrodynamics',4,"2SPR")
Theoretical_Mechanics = Course('Theoretical_Mechanics',3,"2SPR")class Student(People):def __init__(self,name,age,gender,course=None):if course is None:self.course = []else:self.course = [course]super().__init__(name,age,gender)def choose_course(self,course):self.course.append(course) def report_course(self):for Course in self.course:print(Course.name,end="; ")HARRY = Student("HARRY",20,"MALE",Theoretical_Mechanics)
HARRY.choose_course(electrodynamics)
HARRY.report_course()
POTTER = Teacher("POTTER",40,"FEMALE")
Theoretical_Mechanics; electrodynamics; Teacher is built
>>>
相关文章:
Python 面向对象编程笔记:中级面向对象
__super__() 在 Python 中,super 是一个内置函数,用于调用父类方法。该函数可以在子类中调用父类中被重写的方法,从而实现对父类方法的继承并且进行扩展。它能够动态地查找当前子类继承链中的下一个类,从而允许设计者更加灵活地…...
JVM学习笔记(上)
1、总体路线 2、程序计数器 Program Counter Register 程序计数器(寄存器) 作用:是记录下一条 jvm 指令的执行地址行号。 特点: 是线程私有的不会存在内存溢出 解释器会解释指令为机器码交给 cpu 执行,程序计数器会…...
反爬虫技术
预计更新 一、 爬虫技术概述 1.1 什么是爬虫技术 1.2 爬虫技术的应用领域 1.3 爬虫技术的工作原理 二、 网络协议和HTTP协议 2.1 网络协议概述 2.2 HTTP协议介绍 2.3 HTTP请求和响应 三、 Python基础 3.1 Python语言概述 3.2 Python的基本数据类型 3.3 Python的流程控制语句 …...
JAVA中.equals()与 ==的区别
1. “”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。 2..equals() equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比…...
华为OD机试之羊、狼、农夫过河(Java源码)
羊、狼、农夫过河 题目描述 羊、狼、农夫都在岸边,当羊的数量小于狼的数量时,狼会攻击羊,农夫则会损失羊。农夫有一艘容量固定的船,能够承载固定数量的动物。 要求求出不损失羊情况下将全部羊和狼运到对岸需要的最小次数。只计算…...
C++ string的简单应用
C语言的字符串 C的字符串 头文件: #include<string.h> //c #include<string> //C #include<cstring> //C 比较string的大小 两个string对象相加 使用字符串对象来存放字符串 两个string对象相加 string str "Hello,"; st…...
Java中的阻塞队列
阻塞队列的基本概念 1、生产者、消费者的概念 他俩是设计模式的一种,提出这两种概念,通过一个容器的方式能解决强耦合问题 生产者、消费者之间不会直接通讯。通过一个第三方容器、队列的方式进行通讯 生产者生产完数据放入容器之后,不用等待消…...
PriorityBlockingQueue无界阻塞优先级队列
PriorityBlockingQueue无界阻塞优先级队列 PriorityBlockingQueue 是带优先级的无界阻塞队列,每次出队都返回优先级最高的元素,是二叉树最小堆的实 现,研究过数组方式存放最小堆节点的都知道,直接遍历队列元素是无序的。 如图 P…...
「HTML和CSS入门指南」p 标签详解
<p> 标签是什么? HTML5 中的 <p> 标签是用于定义段落的标签。它可以用来标记文章、新闻等长篇内容中的段落,并且可以与其他 HTML 元素配合使用。 <p> 标签的语法和属性 <p> 标签的语法非常简单,只需要在 HTML 文件中插入 <p> 和 </p>…...
【单目标优化算法】孔雀优化算法(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
chatgpt赋能python:Python同一行多个语句:如何提高你的编程效率?
Python同一行多个语句:如何提高你的编程效率? Python是一种优雅的编程语言,拥有简洁易懂的语法,可以帮助你快速编写可以在各种领域使用的高级代码。其中,Python同一行多个语句,是一种可以大大提高编程效率…...
Java反射概述
2 反射 2.1 反射概述 Java反射机制:是指在运行时去获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展2.2 反射获取Class类的对象 我们要想通过反…...
《网络是怎样连接的》(一)
第一章web浏览器 简介 首先输入网址URL,浏览器进行解析,将我们需要哪些数据告诉服务器。浏览器向服务器发送消息,必须告诉操作系统的接收方的IP地址,所以浏览器先查出web服务器的IP地址,向DNS服务器查询域名对应的IP…...
Flink on yarn任务日志怎么看
1、jobmanager日志 在yarn上可以直接看 2、taskmanager日志 在flink的webui中可以看,但是flink任务失败后,webui就不存在了,那怎么看? 这是jobmanager的地址 hadoop02:19888/jobhistory/logs/hadoop02:45454/container_e03_16844…...
二次元的登录界面
今天还是继续坚持写博客,然后今天给大家带来比较具有二次元风格的登录界面,也只是用html和css来写的,大家可以来看看! 个人名片: 😊作者简介:一名大一在校生,web前端开发专业 &…...
2. 量化多因子数据清洗——去极值、标准化、正交化、中性化
一、去极值 1. MAD MAD(mean absolute deviation)又称为绝对值差中位数法,是一种先需计算所有因子与平均值之间的距离总和来检测离群值的方法. def extreme_MAD(rawdata, n): median rawdata.quantile(0.5) # 找出中位数 new_median (abs(…...
皮卡丘反射型XSS
1.反射型xss(get) 进入反射型xss(get)的关卡,我们可以看到如下页面 先输入合法数据查看情况,例如输入“kobe” 再随便输入一个,比如我舍友的外号“xunlei”,“666”,嘿嘿嘿 F12查看源代码,发现你输入的数…...
巧计口诀-软件测试的生命周期,黑盒测试设计方法
目录 1。口诀 2。黑盒设计方法适用场合 3。黑盒设计方法详解 3.1。等价类法 3.2。 边界值法 3.3。判定表法 3.4。因果表 3.5。状态迁移图 3.6。场景法 3.7。正交实验法 3.8。错误推断法 1。口诀 又到了找工作的日子,背诵这些基本知识和概念又开始了。我找…...
Android系统的Ashmem匿名共享内存系统分析(1)- Ashmem驱动
声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法,记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾…文中参考了很多书籍及博客内容,可能涉及的比较…...
Redis 事务详细介绍
事务 注意:Redis单条命令是保证原子性的;但是事务不保证原子性! Redis事务没有隔离级别的概念,所有的命令在事务中,并没有直接被执行,只有发起执行命令时才执行 Redis事务本质:一组命令的集合&…...
深入解析Linux内核sk_buff:网络数据包的内存布局与核心操作
1. 项目概述:从“数据包”到“sk_buff”的认知跃迁在网络编程或者内核开发领域,无论你是刚入门的新手,还是已经写过几个驱动模块的开发者,迟早都会与一个名为sk_buff的数据结构狭路相逢。这个名字听起来有点古怪,它是“…...
Akagi:开源AI麻将助手 - 实时策略分析与智能决策指南
Akagi:开源AI麻将助手 - 实时策略分析与智能决策指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsu…...
智改数转:制造企业绕不开的必答题
近几年,"智改数转"这个词频繁出现在各地政策文件和行业论坛里。对很多制造企业来说,它已经从"可选项"变成了"必答题"。但真正落地的时候,问题远比口号复杂。先说句实话:多数企业的数字化还停留在表…...
蛋白质-配体相互作用分析终极指南:PLIP工具从入门到精通
蛋白质-配体相互作用分析终极指南:PLIP工具从入门到精通 【免费下载链接】plip Protein-Ligand Interaction Profiler - Analyze and visualize non-covalent protein-ligand interactions in PDB files according to 📝 Schake, Bolz, et al. (2025), h…...
如果你还在为CAD、SolidWorks的许可发愁,看看这八家
先讲个真事。上个月我一个老同事打电话来,他们公司做非标自动化,四十几个机械工程师,用的主要是SolidWorks和AutoCAD。他说每年买浮动许可的钱快三百万了,结果研发那边还是天天有人排队等许可。他去看了一眼,下午两点半…...
Speechless:3分钟完成微博PDF备份的终极解决方案
Speechless:3分钟完成微博PDF备份的终极解决方案 【免费下载链接】Speechless 把新浪微博的内容,导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 你是否曾担心珍贵的微博记忆会突然消失&…...
在自动化脚本中集成Taotoken API并观察其长时间运行的可靠性
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在自动化脚本中集成Taotoken API并观察其长时间运行的可靠性 对于需要长时间、周期性调用大模型API的自动化任务而言,服…...
QThread 最坑的不是启动,而是怎么把它停下来
QThread 真正麻烦的地方,不是 start 很多人第一次用 QThread,感觉还挺顺。创建线程,moveToThread,connect 几个信号,start 一下,任务跑起来,界面不卡了,心里还挺美。我以前也这么觉得…...
5个关键功能:如何将普通鼠标打造成macOS生产力神器?
5个关键功能:如何将普通鼠标打造成macOS生产力神器? 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否曾为macOS上的…...
重塑AI代理的数据智能:Wren AI如何构建开放上下文层
重塑AI代理的数据智能:Wren AI如何构建开放上下文层 【免费下载链接】WrenAI Turn any AI Agents into world-class data analysts through the open context layer that gives AI agents grounded, governed memory, context, SQL across 20 data sources, that he…...
