接上一篇 [Python3] 022 面向对象 第二弹

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. 类相关函数
  • 挖坑
    • 给上方两个魔术方法举例
    • 坑号编码:Py023-4

10.4 运算分类相关魔术方法

  • __gt__: 进行大于判断的时候触发的函数

    • 2 个参数:

      • self: 用来获取当前对象
      • 第 2 个:第二个对象
    • 返回值可以是任意值,推荐返回布尔值

此为听 北京图灵学院的 Python3 公开课 所记笔记

[Python3] 023 面向对象 第三弹的更多相关文章

  1. [Python3] 024 面向对象 第四弹

    目录 11. 类和对象的三种方法 12. 抽象类 12.1 抽象方法 12.2 抽象类 12.3 抽象类的使用 13. 自定义类 接上一篇 [Python3] 023 面向对象 第三弹 11. 类和对 ...

  2. Python进阶---面向对象第三弹(进阶篇)

    Python对象中一些方法 一.__str__ class Teacher: def __init__(self,name,age): self.name=name self.age=age self ...

  3. [Python3] 022 面向对象 第二弹

    目录 6. 面向对象的三大特性 6.1 封装 6.1.1 私有 private 6.1.2 受保护 protected 6.1.3 公开 public 6.2 继承 6.2.1 继承的概念与作用 6. ...

  4. 前端学习 第三弹: JavaScript语言的特性与发展

    前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...

  5. 荒芜的周六-PHP之面向对象(三)

    hi 又是开森的周六了.积攒的两周的衣服,终于是差不多洗完了.大下午的才来学点东西~~ 1.PHP面向对象(三) 四.OOP的高级实践 4.3 Static-静态成员 <?phpdate_def ...

  6. C++编程之面向对象的三个基本特征

    面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类 ...

  7. python3.4学习笔记(三) idle 清屏扩展插件

    python3.4学习笔记(三) idle 清屏扩展插件python idle 清屏问题的解决,使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到 ...

  8. 『PyTorch』第三弹重置_Variable对象

    『PyTorch』第三弹_自动求导 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Varibale包含三个属性: data ...

  9. codechef营养题 第三弹

    第三弾が始まる! codechef problems 第三弹 一.Motorbike Racing 题面 It's time for the annual exciting Motorbike Rac ...

随机推荐

  1. Django 的 logging日志文件配置

    在Django的settings配置文件里配置以下信息: import os BASE_LOG_DIR = os.path.join(BASE_DIR , "log") # log ...

  2. mysql中,表与表之间的关系

     """ 1.字段的修改.添加.删除 2.多表关系(外键) 3.单表详细操作:增删改,查(各种条件) """ 字段操作  create ta ...

  3. Linux压缩、解压

    gzip压缩: 归档,压缩,yourFloder文件夹生成yourName.tar.gz: - tar -zcvf yourName.tar.gz yourFloder 解压yourName.tar. ...

  4. CentOS7安装MongoDB及基础操作

    安装环境说明 系统环境说明 [root@master ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@ma ...

  5. JSP学习(1)

    JSP学习(1) 什么是Web应用程序 可以Web访问呢的应用程序,用户只需要浏览器即可访问 静态网页与动态网页 静态网页:网页中内容固定 动态网页:内容通过程序动态显示,自动更新 Java Web应 ...

  6. 【leetcode】1043. Partition Array for Maximum Sum

    题目如下: Given an integer array A, you partition the array into (contiguous) subarrays of length at mos ...

  7. java通配符写法

    有时候我们会遇到这样的需求,需要把一个报文里的某些参数项通过通配符的形式配置成我们需要的结果值插入回报文中. String filetext = "<cn>#用户身份ID(主账号 ...

  8. vue框架搭建--移动端

    由于Vue官方提供了vue-cli手脚架,所以快速构建出个简单的项目框架.在做移动端项目时,因为移动端的特性可能会用到些比较常用的插件,就在这里简单介绍如何使用 这里只介绍怎么在项目中安装引用和简单的 ...

  9. 【LOMBOK】能引入 @Slf4j 注解,不能识别 log 的解决方法

    问题: 在pom.xml中加入引入了lombok的依赖,可以引用@Slf4j注解不能识别log 如:注:上面一篇博客,已经说明lombok的安装了,但是用的时候还有点问题. 1).把lombok.ja ...

  10. 【CF1257E】The Contest【线段树】

    题意:给定三个序列abc,问最少操作几次使得满足a<b<c 题解:将三个序列合并起来,设cnt[i][1/2/3]表示前i个数有几个是来自序列1/2/3的. 枚举第一个序列要到i,此时对于 ...