[Python3] 023 面向对象 第三弹
7. 类相关函数
| 函数 | 释义 |
|---|---|
| issubclass | 检测一个类是否为另一个类的子类 |
| isinstance | 检测一个对象是否为一个类的实例 |
| hasattr | 检测一个对象是否有成员 xxx |
| getattr | get attribute |
| setattr | set attribute |
| delattr | delete attribute |
- 挖坑
- 对以上几个函数举例
- 坑号编码:Py023-1
8. 类的成员描述符(属性)
- 类的成员描述符是为了在类中对类的成员属性进行相关操作而创建的一种方式
| 操作 | 释义 |
|---|---|
| get | 获取属性的操作 |
| set | 修改或者添加属性操作 |
| delete | 删除属性的操作 |
- 如果想使用类的成员描述符,大概有三种方法
- 使用类实现描述器
- 使用属性修饰符
- 使用 property 函数
- property 函数很简单
- property(fget, fset, fdel, doc)
- 无论哪种修饰符都是为了对成员属性进行相应的控制
- 类的方式:适合多个类中的多个属性共用一个描述符
- property:使用于当前类中,可以控制一个类中多个属性
- 属性修饰符: 使用于当前类中,控制一个类中的一个属性
9. 类的内置属性
| 内置属性 | 释义 |
|---|---|
__dict__ |
以字典的方式显示类的成员组成 |
__doc__ |
获取类的文档信息 |
__name__ |
获取类的名称;如果在模块中使用,获取模块的名称 |
__bases__ |
获取某个类的所有父类,以元组的方式显示 |
10. 类的常用魔术方法
- 魔术方法(魔法方法)就是不需要人为调用的方法,基本是在特定的时刻自动触发
- 魔术方法的统一的特征,方法名被前后各两个下划线包裹
10.1 操作类
| 魔术方法 | 释义 |
|---|---|
__init__ |
构造函数 |
__new__ |
对象实例化方法;此函数较特殊,一般不需要使用 |
__call__ |
对象当函数使用的时候触发 |
__str__ |
当对象被当做字符串使用的时候调用 |
__repr__ |
返回字符串 |
- 挖坑
| 坑号编码 | 内容 |
|---|---|
| Py023-2 | 对以上魔术方法举几个简单的例子 |
| Py023-3 | __str__ 跟 __str__ 具体区别 |
10.2 描述符
__set____get____delete__
10.3 属性操作
__getattr__: 访问一个不存在的属性时触发__setattr__: 对成员属性进行设置的时候触发- 3 个参数:
- self: 用来获取当前对象
- 第 2 个:被设置的属性名称,以字符串形式出现
- 第 3 个:需要对属性名称设置的值
- 作用:进行属性设置的时候进行验证或者修改
- 注意:在该方法中不能对属性直接进行赋值操作,否则会陷入死循环
- 可对比
7. 类相关函数
- 3 个参数:
- 挖坑
- 给上方两个魔术方法举例
- 坑号编码:Py023-4
10.4 运算分类相关魔术方法
__gt__: 进行大于判断的时候触发的函数- 2 个参数:
- self: 用来获取当前对象
- 第 2 个:第二个对象
- 返回值可以是任意值,推荐返回布尔值
- 2 个参数:
此为听 北京图灵学院的 Python3 公开课 所记笔记
[Python3] 023 面向对象 第三弹的更多相关文章
- [Python3] 024 面向对象 第四弹
目录 11. 类和对象的三种方法 12. 抽象类 12.1 抽象方法 12.2 抽象类 12.3 抽象类的使用 13. 自定义类 接上一篇 [Python3] 023 面向对象 第三弹 11. 类和对 ...
- Python进阶---面向对象第三弹(进阶篇)
Python对象中一些方法 一.__str__ class Teacher: def __init__(self,name,age): self.name=name self.age=age self ...
- [Python3] 022 面向对象 第二弹
目录 6. 面向对象的三大特性 6.1 封装 6.1.1 私有 private 6.1.2 受保护 protected 6.1.3 公开 public 6.2 继承 6.2.1 继承的概念与作用 6. ...
- 前端学习 第三弹: JavaScript语言的特性与发展
前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...
- 荒芜的周六-PHP之面向对象(三)
hi 又是开森的周六了.积攒的两周的衣服,终于是差不多洗完了.大下午的才来学点东西~~ 1.PHP面向对象(三) 四.OOP的高级实践 4.3 Static-静态成员 <?phpdate_def ...
- C++编程之面向对象的三个基本特征
面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类 ...
- python3.4学习笔记(三) idle 清屏扩展插件
python3.4学习笔记(三) idle 清屏扩展插件python idle 清屏问题的解决,使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到 ...
- 『PyTorch』第三弹重置_Variable对象
『PyTorch』第三弹_自动求导 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Varibale包含三个属性: data ...
- codechef营养题 第三弹
第三弾が始まる! codechef problems 第三弹 一.Motorbike Racing 题面 It's time for the annual exciting Motorbike Rac ...
随机推荐
- Vue-cli2项目文件目录解析
前言 不是原创,真的不是原创,主要我是根据CSDN的一篇文章和其他平台上的文章整理而来,在最后我会贴上所有原文的地址,下面正式进入正文. Vue-cli项目文件目录结构 这个是Vue-cli2.0版本 ...
- 用C#实现获取文件夹大小的源代码
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- Kintex 7五兄弟
基KC705E 增强版 基于FMC接口的Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 接口卡(136) 本板卡是Xilinx公司芯片V5系列芯片设计信号处理板卡.由一 ...
- [Poj2349]Arctic Network(二分,最小生成树)
[Poj2349]Arctic Network Description 国防部(DND)要用无线网络连接北部几个哨所.两种不同的通信技术被用于建立网络:每一个哨所有一个无线电收发器,一些哨所将有一个卫 ...
- 切面AOP的切点@Pointcut用法
格式: execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern ...
- php内置函数分析之strtoupper()、strtolower()
strtoupper(): PHP_FUNCTION(strtoupper) { zend_string *str; ZEND_PARSE_PARAMETERS_START(, ) Z_PARAM_S ...
- URL编码表
url编码是一种浏览器用来打包表单输入的格式. 定义 url编码是一种浏览器用来打包表单输入的格式.浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送 ...
- tensorflow函数介绍(4)
1.队列的实现: import tensorflow as tf q=tf.FIFOQueue(2,'int32') #创建一个先进先出队列,指定队列中最多可以保存两个元素,并指定类型为整数. #先进 ...
- animation transition transform
animation:动画名称 花费时间 运动曲线 何时开始 播放次数 是否反方向 div{width:100px;height:100px;background:red;animation:move ...
- linux运维、架构之路-网络基础
一. 常用网络设备 1.交换机:实现多台主机之间互相通讯的需求 交换机实现互相通讯的要求: ①主机身份标识信息:mac地址,利用源mac和目标mac地址,进行身份信息识别 ②主机通过交换机识别目标主机 ...