首页 > 其他分享 >day24 面向对象进阶

day24 面向对象进阶

时间:2023-12-20 15:24:13浏览次数:37  
标签:__ f1 f2 进阶 对象 day24 绑定 面向对象 方法

day24开始
2023年12月20日 周三 12:25:36
类的组合:把类对象当做变量值、参数、返回值、容器元素使用,这样可以间接使用类对象的方法
class F1:
pass
class F2:
pass

f1=F1()
f2=F2()
f1.f2=f2#等号前面的f2是f1属性的名字(key) 等号后面的f2是F2类实例化出来的一个对象(value) 现将f2赋值给f1.f2那么 f1.f2也是F2类的一个对象
print(f1.__dict__)


打印结果:
{'f2': <__main__.F2 object at 0x00000165D4340DD0>}

菱形继承:
新式类:广度优先 老祖宗最后查 继承了object类的类 py3里面都是新式类
经典类:深度优先 一路查到底

多态与多态性:
多态:体现在定义阶段 鸭子必须长的像鸭子 也必须叫得像鸭子
多态性:体现在调用阶段 只要长得像鸭子 叫得像鸭子的对象就一定会叫


类的封装:类内部可以访问 类外部不可以访问 (定义阶段)
实现方法:在不想被访问的对象(属性、方法)前面加__
对类属性封装的作用:保护了隐私 增强了安全性
对类方法封装的作用:精简了代码 简化了使用
class people():
__count=2
print(__count)

print(people.__count)

打印结果:
2
Traceback (most recent call last):
File "F:\pylearn\day24\test.py", line 6, in <module>
print(people.__count)
^^^^^^^^^^^^^^
AttributeError: type object 'people' has no attribute '__count'

 

装饰器:@property 获取方法返回值的时候触发 并且只能有self一个参数
用了后调用方法不需要加括号


类和对象的绑定方法和非绑定方法:

没有被任何装饰器修饰的方法都是对象的绑定方法 这类方法是专门为类定制的
通过对象调用绑定到对象的方法时会有一个自动传值的过程,即自动把当前对象传给方法的第一个参数self(约定俗成写成self);
若类需要调用绑定到对象的方法时需要给self手动传值。

类中使用 @classmethod 修饰的方法就是绑定到类的方法
在类内部使用 @staticmethod 修饰的方法即为非绑定方法,这类方法和普通定义的函数没有区别,不与类或对象绑定,谁都可以调用,且没有自动传值的效果

2023年12月20日 周三 15:09:10

 

标签:__,f1,f2,进阶,对象,day24,绑定,面向对象,方法
From: https://www.cnblogs.com/yyyjw/p/17916574.html

相关文章

  • 12.Capabilities 进阶
    deviceName只是设备的名字,别名随便起不能锁定唯一一个设备uid多设备选择的时候,要指定uid默认读取设备列表的第一个设备设备列表获取adbdevicesnewCommandTimeoutappium程序应等待来自客户端的新命令多长时间超时后==会话删除==默认 60 秒设置为0......
  • pwn知识——ret2text进阶
    stacksmash造成原因当进行栈溢出时,触发了__stack_chk_fail,从而拦截了该栈溢出,使程序崩溃利用原理我们首先了解一下__stack_chk_fail函数的构成发现调用了__fortify_fail函数,那我们再看下这个函数发现有两个参数,一个是msg(信息,也就是前边的"stacksmashingdetected"),另......
  • day23 面向对象进阶
    属性查找顺序:对象本身→类对于类而言,self就是一个普通形参对于对象而言,self就是对象本身 类的继承:减少重复#自己写的时候不推荐使用继承继承多个的时候功能会混乱继承后子类会拿到父类的所有东西classfather():classson(father):继承后的属性查找顺序:对象自己→类→父......
  • 2023强网杯ez_fmt题解及进阶格式化之劫持子函数
    格式化任意内存读写相信已经是老生常谈了,但是随着题目难度加大,格式化题目给我们的难题逐渐变成了覆写什么,改写什么。这题对我是一道很好的例题,其中对栈及函数调用的理解堪称刷新我的认知。exp先放着,想自己调试理解的可以看看。frompwnimport*context(terminal=['tmux','......
  • Redis进阶:Lua初尝试
    Lua是一门脚本语言,可以编写Lua脚本到Redis中执行 【使用Lua脚本的优点】1.减少网络开销。Redis每条命令都需要进行网络传输,特别是命令条数很多的情况。2.原子操作。脚本都会作为一个整体执行,中间不会有其他命令插入。3.复用。会永远存储在Redis中比较类似Sql里面的存储过程......
  • 秦疆的Java课程笔记:76 面向对象 N中内部类
    内部类就是在一个类的内部再定义一个类。比如,在A类中定义一个B类,那么B类相对于A类来说就是内部类;相反,A类相对于B类就是外部类。秦疆老师声明,这小节主要是长长见识,实际编程作业中不推荐下列写法。成员内部类//先写一个有内部类的类=============================publiccl......
  • 刘方舟 VC++面向对象与可视化程序设计 黄维通
    注:由于题目不确定,整理知识点范围比较宽,适当选取1.内联函数     定义:定义在类体内的成员函数,即函数的函数体放在类体内     特点:在调用处用内联函数体的代码来替换,用于解决程序的运行效率问题。一定要在调用之前定义,并且内联函数无法递归调用。2.构造函数与析构......
  • Java面向对象程序设计(上海交通大学出版社)12章及以后的课后问题解析
    1)Map集合和Collection集合的区别是什么? Map集合和Collection集合都是Java集合框架中的接口,它们之间有一些关键的区别:元素存储方式:Collection:用于存储单一元素的集合接口。它继承自Iterable接口,包含常见的子接口如List、Set。Map:用于存储键值对(key-value......
  • 29道C++ 面向对象高频题整理(附答案背诵版)
    1、什么是类?在C++中,类是一种用户定义的数据类型,它可以包含数据成员和函数成员。数据成员用于存储与类相关的状态,而函数成员可以定义对这些数据进行操作的方法。可以把类想象为一个蓝图,根据这个蓝图可以创建对象,这些对象在内存中是类的实例。比如说,我们可以定义一个Car类来表示汽......
  • 秦疆的Java课程笔记:74 面向对象 抽象类
    abstract修饰符可以用来修饰方法,也可以用来修饰类。如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。抽象方法,只有方法的......