################## __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: 内置私有方法相关推荐

  1. python中的random模块_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  2. python中read函数解释_Python内置函数解释教程,readwill(非常详细的代码演示截图),详解,看,了,就,会,很...

    内置函数 abs() 获取绝对值 all() 接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False any() 接受一个迭代器,如果迭代器里有一个元素为真,那么返回True ...

  3. python中int的功能_Python内置函数int()高级用法

    int()函数常用来把其他类型转换为整数,例如: >>> int(3.2) 3>>> int(1/3) 0 其实,int是Python内置类型之一,之所以能够当作函 ...

  4. python中read函数解释_Python内置函数:read()

    1> >>> f=open(r"C:\Users\Administrator\Desktop\test.txt",'r') >>> s=f ...

  5. python列表的内置方法_Python内置方法详解

    1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名.可以查看所有的字符串的内置方法,如: 1> count: ...

  6. python内置函数及方法_python 内置函数 应用及方法

    一.主要内容: 1.内置函数 什么是内置函数? 就是python给你提供的. 拿来直接⽤的函数, 比如print., input等等. 截⽌ 到python版本3.6.2 python⼀共提供了68个 ...

  7. Python中10个常用的内置函数

    大家好,我是小张 在 3.8 版本中,Python 解释器共有近 69 个内置函数可供使用,有了它们能极大地提高编码效率, 数量虽然不少,但在日常搬砖中只用到其中一部分,根据使用频率和用法,列出来几个 ...

  8. python 魔法函数 运行时_python内置函数和魔法函数

    内置方法:Python中声明每一个类系统都会加上一些默认内置方法,提供给系统调用该类的对象时使用.比如需要实例化一个对象时,需要调用该类的init方法:使用print去打印一个类时,其实调用的是str ...

  9. 列举至少五个python内置函数和使用方法_Python内置函数 next的具体使用方法 Python中seek和next区别...

    python列表本来没有next方法,为什么用iter函数生...对list用__dir__()发现没有next方法,但是用iter()生成迭代器,对该迭代next是进行迭代的方法,只有迭代器和生成器 ...

最新文章

  1. C 编程异常 — double free or corruption (fasttop)
  2. 网站优化只需五步技巧分享推广无界限
  3. C# 索引器使用总结
  4. string stringbuffer stringbuilder 区别
  5. 数据科学篇| Seaborn库的使用(四)
  6. 一个 bad file descriptor 的问题
  7. Spring学习记录(九)---通过工厂方法配置bean
  8. Software License Manager
  9. eclipse启动报错 Problems occurred when invoking code from plug-in: org.eclipse.jface
  10. Perl入门(七) Perl脚本的调试
  11. 员工培训与开发实训心得体会_人力资源实训个人总结
  12. element ui 前台模板_一个干净优雅的Element UI Admin模板
  13. 利用Python制作证件照
  14. 大学实训_软件毕设_Java入门实战_商场管理系统_Punrain
  15. 分享一个下载系统镜像的网站
  16. linux配置mac地址命令是什么,Linux环境下如何配置IP地址、MAC地址
  17. 亲民地理38期-江西极顶武功山(上)_我是亲民_新浪博客
  18. 数据,源码防泄密解决方案
  19. 旺旺打标工具,淘宝搜索打标软件(含旺旺打标API接口)
  20. 内网穿透工具--Sunny-Ngrok讲解

热门文章

  1. Mac OS 上配置java开发环境
  2. jsp页面播放服务器视频
  3. 2018年全国多校算法寒假训练营练习比赛(第一场)G 圆圈
  4. tcpdump 抓包
  5. C++学习笔记39:进程概念
  6. hdu1212(大数取模)
  7. Aptana中的中文显示乱码问题
  8. 2.python中的矩阵、多维数组----numpy
  9. unity 制作书本 翻页效果
  10. php首字母 大写 数组去重复