python-面向对象速查表-内置方法-内置函数-内置属性(只整理了部分内容)
今日临时总结的内容,可能还有些不正确的地方,初步当做个速查表吧。
类的内置函数(继承object的,自己重写)
内置函数 | 执行时机 | 注意点 | 调用案例 |
---|---|---|---|
__init__ |
实例化对象时 | 不允许写返回值(return None和不返回没区别) 子类重写了 __init__() 方法要在子类中的__init__() 方法调用父类的__init__ 方法(super(当前类, self).__init__(参数) ) |
stu = Student() |
__new__ |
类实例化被调用时 | stu = Studetn() |
|
__call__ |
调用对象时 | 要记得调用父类的 | stu(__call__方法的参数) |
__str__ |
对象转为字符串时 | 必须return 字符串类型的返回值(默认返回值时类型+地址,没啥意义) | print(stu) |
__del__ |
对象删除时(手动或程序结束、垃圾回收机制) | del stu |
|
__getattr__ ( . 方法原理) |
用 .访问属性时 | 该属性不存在才执行,有__getattribute__ 方法会先执行__getattribute__ 方法 |
stu.gaewfg |
__setattr__ ( . 方法原理) |
用 .新增/修改属性时执行 | stu.sex = 'male' |
|
__delattr__ ( . 方法原理) |
用del 对象.属性 删除属性时,执行 | 属性 被删除时才执行 | del stu.age |
__getattribute__ |
用 .访问属性时 | 不管该属性有没有都会执行,写了这个方法后__getattr__需要自行调用 |
stu.age |
__getitem__ ( [] 原理) |
用 [属性名] 访问属性时 | stu[age] |
|
__setitem__ ( [] 原理) |
用 [属性名] = 修改或新增属性时 | stu[age] = 18 |
|
__delitem__ ( [] 原理) |
用 [属性名] 删除属性时 | del stu[age] |
|
__gt__ __ge__ __eq__ __ne__ __lt__ __le__ 比较运算符(自定义比较规则) |
调用对应的比较符时 | 像__gt__ 和 __lt__ 这样的只需要指定一个即可 |
stu1 > stu2 |
__iter__ _next__ 迭代器协议 |
当成迭代取值对象时 | for i in stu: ... |
|
__enter__ __exit__ 上下文管理 |
跟在 with 后面时 | with MyOpen(__enter__ 的参数) as m: |
类的内置属性(直接就可以调用的)
属性 | 作用 | 注意点 | 案例 |
---|---|---|---|
__dict__ |
返回调用者自身的名称空间 | stu.__dict__ |
|
__class__ |
返回当前调用对象的类 | ||
__slots__ |
指定该类对象能所能拥有的全部属性,减少内存开销 | 会将类对象的属性给限制死,视情况使用,连__dict__ 都会被省掉 |
__slots__ = ['name'] # 加了以后再添加属性就不行了,限制属性 |
类.mro() |
获取到类的mro 列表,即类的查找顺序 | python3中才有这个方法 | |
类.__name__ |
返回类的类名 | class_name = stu.__class__ |
面向对象相关内置方法(python解释器内置方法)
函数 | 作用 | 注意点 | 案例 |
---|---|---|---|
hasattr() |
判断某个对象是否存在某个属性 | 返回值是True / False | hasattr(p, 'age') |
getattr() |
从对象中取出值 | 第三个位置默认值,不存在时返回默认值 | getattr(p, 'age', None) |
setattr() |
为对象添加、修改属性 | setattr(p, 'name', 'jackson') |
|
delattr() |
删除对象属性 | delattr(p, 'school') |
|
locals() |
获取当前名称空间内的所有名字 | 直接修改无效 | 类的初始化函数初始化属性(__init__ ) |
isinstance() |
判断一个对象是不是某个类/某几个类的实例 | 第二参数可以传元组,返回值为 True/ False | isinstance(obj1, (int, Student)) obj1是int 类型或者 Student 类型? |
issubclass() |
判断一个类是不是另一个类的子类 | issubclass(type(obj), Animal) 对象obj 的类 是不是Animal的子类 |
越来越感觉时间不够用了,要加油呀!
一寸光阴一寸金,寸金难买寸光阴。
python-面向对象速查表-内置方法-内置函数-内置属性(只整理了部分内容)的更多相关文章
- 机器学习算法 Python&R 速查表
sklearn实战-乳腺癌细胞数据挖掘( 博主亲自录制) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...
- 机器学习算法 Python & R速查表
- 可能是史上最全的机器学习和Python(包括数学)速查表
新手学习机器学习很难,就是收集资料也很费劲.所幸Robbie Allen从不同来源收集了目前最全的有关机器学习.Python和相关数学知识的速查表大全.强烈建议收藏! 机器学习有很多方面. 当我开始刷 ...
- Python系列教程-详细版 | 图文+代码,快速搞定Python编程(附全套速查表)
作者:韩信子@ShowMeAI 教程地址:http://showmeai.tech/article-detail/python-tutorial 声明:版权所有,转载请联系平台与作者并注明出处 引言 ...
- 分享 - 27 个机器学习、数学、Python 速查表
转载自:伯乐在线 - iPytLab,原文链接,侵删 机器学习涉及到的方面非常多.当我开始准备复习这些内容的时候,我找到了许多不同的”速查表”, 这些速查表针对某一主题都罗列出了所有我需要知道的知 ...
- python 下的数据结构与算法---2:大O符号与常用算法和数据结构的复杂度速查表
目录: 一:大O记法 二:各函数高阶比较 三:常用算法和数据结构的复杂度速查表 四:常见的logn是怎么来的 一:大O记法 算法复杂度记法有很多种,其中最常用的就是Big O notation(大O记 ...
- GNU Emacs命令速查表
GNU Emacs命令速查表 第一章 Emacs的基本概念 表1-1:Emacs编辑器的主模式 模式 功能 基本模式(fundamental mode) 默认模式,无特殊行为 文本模式(text m ...
- 这可能是AI、机器学习和大数据领域覆盖最全的一份速查表
https://mp.weixin.qq.com/s?__biz=MjM5ODE1NDYyMA==&mid=2653390110&idx=1&sn=b3e5d6e946b719 ...
- Bash中文速查表
最好用的中文速查表(Cheatsheet) 来源:https://github.com/skywind3000/awesome-cheatsheets 感谢网友们的贡献! ############## ...
随机推荐
- codeforces#1167F. Scalar Queries(树状数组+求贡献)
题目链接: https://codeforces.com/contest/1167/problem/F 题意: 给出长度为$n$的数组,初始每个元素为$a_i$ 定义:$f(l, r)$为,重排$l$ ...
- [CSP-S模拟测试]:A(单调栈维护凸包+二分答案)
题目传送门(内部题150) 输入格式 第一行两个整数$N,Q$. 接下来的$N$行,每行两个整数$a_i,b_i$. 接下来的$Q$行,每行一个整数$x$. 输出格式 对于每个询问,输出一行一个整数表 ...
- golang 文件导入数据追加sheet
func ReadXlsx(c []CmdbTest, SheetName string) error { //打开文件,如果文件不存在创建,存在就打开 path := ". ...
- django 快速实现登陆,接着注册的项目写(五)
1.改项目的urls.py from django.conf.urls import url,include from django.contrib import admin admin.autodi ...
- 【转】mysql基础汇总
mysql基础知识语法汇总整理(二) 原文:https://www.cnblogs.com/cxx8181602/p/9525950.html 连接数据库操作 /*连接mysql*/ mysql - ...
- 终端和vim中文编码问题
一. 终端中文显示乱码 有网友说修改 /var/lib/locales/supported.d/locale 和 /etc/default/locale 就可以了但是如果多人共用一台机器没有root权 ...
- ArcGIS中国工具3.0正式发布
ArcGIS中国工具3.0正式发布,新功能有 1. 支持面积分割(见4.6),见https://weibo.com/tv/v/HsM2ksYY3?fid=1034:4368578107884427 ...
- Linux系统Docker配置阿里云镜像加速器
vim /etc/docker/daemon.json # 替换为 "registry-mirrors": ["https://v2ltjwbg.mirror.aliyu ...
- 火车购票问题(16年ccf)
火车购票问题(16年ccf) 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一 ...
- flutter 自定义tabbar 给tabbar添加背景功能
flutter 自带的tabbar BottomNavigationBar有长按水波纹效果,不可以添加背景图片功能,如果有这方面的需求,就需要自定义tabbar了 自定义图片 我们使用BottomAp ...