Python: 内置私有方法
################## __new__ ##################
@staticmethod
__new__(cls [, ...])
类的构造器,创建某个类的实例,返回值应该是cls 的实例。 它执行在 cls的 __init__ 之前。
如果__new__不返回cls一个实例,将不会再执行 cls 的 __init__
################## __init__ ##################
__init___(self [, ...])
类的构造器
################## __del__ ##################
__init___(self [, ...])
类的析构函数,当使用del obj 时,或者GC时,会调用该析构函数
################## __repr__ ##################
__repr___(self [, ...])
返回一个字符串,当调用内置函数 repr(obj)时,会调用obj.__repr__
################## __str__ ##################
__repr___(self [, ...])
返回一个字符串,类似于java中的toString()。当调用内置函数 str(obj)或者print(obj)时,会调用obj.__str__
################## 比较操作符 (>,<,>=,<=,!=,==)##################
两个对象使用 比较运算符(>,<,>=,<=,!=,==)比较时,执行过程是这样的。
1)优先使用 "rich comparison",即:
__lt__(self, other),
__le__(self, other),
__eq__(self, other),
__ne__(self, other),
__gt__(self, other),
__ge__(self, other),
2)如果未找到对应的 "rich comparison",则使用 __cmp__:
__cmp__(self, other)
在使用__cmp__时, 如果 self < other ,返回负整数,如果 self == other 返回 0,如果 self > other 返回正整数
3)如果__cmp__也没有找到,则使用object identity (“address”) 进行比较。
################## __hash__ ##################
__hash__(self)
当使用内置函数 hash(object)时,或者在一个 基于hash的集合上(如 set, frozenset, dict)操作时会调用object.__hash__
该函数返回一个整数。
1)如果一个class没有定义 __cmp__或者__eq__,就不应该去定义 __hash__,
2)如果定义了__cmp__或者__eq__,但是没有定义__hash__,那么该类的实例就不能用在基于hash的集合中,仍然可以用于线性集合中。
################## 真值判断(bool(obj)) ##################
当需要进行真值测试(如使用内置函数 bool(obj)),或者在if 表达式中时,调用流程是这样的:
1)使用__nonzero__来判断真值:
__nonzero__(self)
当需要进行真值测试(如使用内置函数 bool(obj))时,会调用它。返回值是True | False,或者 0 | 1
2)如果没有定义__nonzero__,则会使用__len__:
__len__(self)
该函数,还会在使用内置函数 len(obj)时调用。
如果是 bool(obj)引起了__len__的调用,则根据__len__的返回值是否为0来判断真值
################## __unicode__ ##################
__unicode__(self)
返回一个 Unicode对象,会在使用 内置函数 unicode(obj)时调用。如果未定义该函数,则会采用系统默认的编码转换为字符串。
然后再转为Unicode。
################## 像容器一样操作对象 ##################
__len__(self)
当使用内置函数len(),bool()会调用它。
__getitem__(self, key)
__setitem__(self, key)
__delitem__(self, key)
当使用 object[key]时会调用__getitem__,当使用object[key]=value时,会调用__setitem__
__iter__(self):
该方法可以在for ... in ... 或者 if in 或者 if not in中调用,
该函数应该返回一个 iterator对象(一个有__next__(self)的对象)
__reversed__(self):
当使用内置函数 reversed()时,会调用该函数。作用是反向迭代。
该函数应该返回一个反向的iterator对象
############### if in 或者 if not in ##################
在使用 if in 或者 if not in操作时,执行顺序是:
1)使用__contains__来判断
__contains__(self, item):
返回True如果对象中包含item
2)如果对象中没有定义__contains__,则作为一个通过迭代的的方式来判断
使用__iter__(self) 返回一个iterator,
然后使用__next__迭代,迭代过程中使用 item==other 方式来判断
3)如果上述两种都没有,则通过__getitem__方式判断
###############比较对象ID( is 或者 is not) #############
is 比较对象 ID,== 比较对象值
可以将 Python 中 is 理解为与Java中的==,Python中 ==理解为java中的equals
############### for in 遍历 #########################
1)使用 __iter__ 返回一个iterator对象,然后调用其 __next__
2)如果未指定__iter__,但是有 __getitem__(self),则结合 object.__len__ 属性和 object.__getitem__(self)来遍历
Python: 内置私有方法的更多相关文章
- Python 的内置字符串方法(收藏专用)
Python 的内置字符串方法(收藏专用) method 字符串 string python3.x python 4.7k 次阅读 · 读完需要 44 分钟 5 字符串处理是非常常用的技能,但 ...
- Python内置方法详解
1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名. 可以查看所有的字符串的内置方法,如: 1> count ...
- python - 类的内置 attr 方法
类的内置 attr 方法 #类的内置 attr 方法: # __getattr__ # __setattr__ # __delattr__ # __getattr__ #到调用一个类不存在数参数时,将 ...
- python内置装饰器
前言 接着上一篇笔记,我们来看看内置装饰器property.staticmethod.classmethod 一.property装饰器 1. 普通方式修改属性值 code class Celsius ...
- python内置函数
python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...
- python 内置函数和函数装饰器
python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...
- Python内置的字符串处理函数整理
Python内置的字符串处理函数整理 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-29我要评论 Python内置的字符串处理函数整理,收集常用的Python 内置的各种字符串处理 ...
- Python基础篇【第2篇】: Python内置函数(一)
Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...
- [python基础知识]python内置函数map/reduce/filter
python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...
随机推荐
- bash内置命令mapfile:读取文件内容到数组
bash提供了两个内置命令:readarray和mapfile,它们是同义词.它们的作用是从标准输入读取一行行的数据,然后每一行都赋值给一个数组的各元素.显然,在shell编程中更常用的是从文件.从管 ...
- Go Web:数据存储(1)——内存存储
数据可以存储在内存中.文件中.按二进制序列化存储的文件中.数据库中等. 1.内存存储 2.CSV文件存储 3.gob序列化存储 内存存储 将数据存储到内存中.此处所指的内存是指应用程序自身的内存空间( ...
- lwIP 2.0.3 移植笔记(基于 STM32 + μC/OS-II)
本次实验参考自原子已经移植好的 LWIP(版本:1.4.1)模板来进行的,感谢! 由于要做的一个小项目要用到网络通信,而且想要加上 UC/OS-II 跑个系统,感觉 LWIP 这个轻量级的 IP 协议 ...
- 【转载】访问IIS中网站出现 403.14 - Forbidden报错信息
将网站发布后部署到IIS后,配置完应用程序池以及相关设置项后,在浏览器中访问设置好的网站,出现403.14 - Forbidden的错误信息,从错误信息的提示来看,应该是IIS服务器此网站目录的内容被 ...
- ____利用C#特性Attribute完成对sql语句的拼接
//定义 特性类: public class MyAttribute : Attribute//自定义注解类判断是否是主键 { public bool PrimaryKey = false; publ ...
- Bootstrap中的datetimepicker用法
本文实例为大家分享了bootstrap datetimepicker日期插件的简单使用,供大家参考,具体内容如下 首先在文件头部引入必要的文件: 1 2 <link rel="styl ...
- 谈谈mysql的悲观和乐观锁
悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念.之前有写过一篇文章关于并发的处理思路和解决方案,这里我单独将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍一 ...
- Java 学习笔记 执行外部命令 包装类 枚举类型
执行外部命令 Runtime只能通过静态方法getRuntime获得,可以用来执行外部的命令 Runtime runtime = Runtime.getRuntime(); runtime.exec( ...
- Android RecyclerView预览item
参考: Android Tools Attributes listItem 和 Sample Data 的用法 笔记 tools:text TextView可以实现预览,不影响实际的效果 例如: to ...
- JSJ—类与对象
当你在设计类时,要记得对象时靠类的模型塑造出来的,你可以这样看: ——对象是已知事物 ——对象会执行的动作 对象本身已知的事物称为实例变量,它们代表对象的状态(数据),且该类型的每一个对象都会独立的拥 ...