一.内置方法

1.内置方法表示:__名字__

  几种名称: 1)双下方法 2)魔术方法 3)类中的特殊方法/内置方法

  类中的每一个双下方法都有它自己的特殊意义;所有的双下方法没有 需要你在外部直接调用的

  父类Object都带有这些方法,而总是有一些其他的 内置函数 特殊语法来触发双下方法

2.__call__()方法:

class A:
def __call__(self, *args, **kwargs):
print('对象()自动触发我!')
a = A()
a() #这两个步骤还可以写为A()()

1)__call__的一些用法,如果你有两个类,你只想显给别人B类,而不暴露A类,可能在实例化A类之前做一些事情

这时候就需要引入另一个类,让它执行__call__方法

class A:
def __call__(self, *args, **kwargs):
print('执行call方法了')
class B:
def __init__(self,cls):
print('在实例化A之前做一些事情')
self.a = cls() #实例化A的对象
self.a() #调用A类中的call方法
print('在实例化A之后做一些事情')
B(A) #只暴露B,不暴露A

2)__len__方法:

a:遇到len(obj)会自动触发obj的__len__方法

class A:
def __init__(self,obj):
self.obj = obj
def __len__(self):
return len(self.obj)
a = A('wwwwww')
print(len(a))
#结果为6

3)__str__方法:

a:会自动触发该方法的几种情况

1)print一个对象相当于调用一个对象的__str__方法

   2)str(obj),相当于执行obj.__str__方法

   3)'%s' % obj相当于执行了obj.__str__方法

b:如果类中没有__str__方法,会自动执行父类的Object的__str__方法,但是只会返回给你一个内存地址,因为它不知道你想要得到什么属性;

class A:
pass
a = A()
print(a)
#输出结果:
<__main__.A object at 0x0000024F722690F0> #类中含有__str__方法:
class A:
def __str__(self):
return ('%s, %s, %s')% (self.name,self.age,self.cls)
def __init__(self,name):
self.name = name
self.age = 15
self.cls = 'python'
a = A('zhou')
print(a)
b = A('liu')
print(b)
#输出结果
zhou, 15, python
liu, 15, python

c:有什么用处,特别好用能不用你调用就自动输出一些你需要显示的内容;

4)__new__方法:

a:__new__和__init__的千丝万缕

__new__:开辟内存空间,属于对象的,把对象的空间作为返回值传给self,执行init方法;  类的构造方法

__init__:给对象封装属性;   类的初始化方法

看他们的执行顺序:

class A:
def __new__(cls, *args, **kwargs):
print('执行了__new__方法')
return object.__new__(cls)
def __init__(self):
print('执行了__init__方法')
a = A()
#执行结果
执行了__new__方法
执行了__init__方法

#所以__new__是在对象实例化之前调用的,还没有开辟空间传给self,所以这里会把cls类的空间传进来;

new的金典题目单例类:

单例类:在实例化对象后,每个对象的开辟的空间一样,就是单例类;

class A:
_NAME = None
def __new__(cls, *args, **kwargs):
if not cls._NAME:
cls._NAME = object.__new__(cls)
return cls._NAME
def __init__(self):
pass
a = A()
print(a)
b = A()
print(b)
#输出结果
<__main__.A object at 0x00000221704E9240>
<__main__.A object at 0x00000221704E9240>

Python_020(几个经典内置方法)的更多相关文章

  1. Python 类的内置方法

    #!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # p ...

  2. Python之路(第二十九篇) 面向对象进阶:内置方法补充、异常处理

    一.__new__方法 __init__()是初始化方法,__new__()方法是构造方法,创建一个新的对象 实例化对象的时候,调用__init__()初始化之前,先调用了__new__()方法 __ ...

  3. python黑魔法 -- 内置方法使用

    很多pythonic的代码都会用到内置方法,根据自己的经验,罗列一下自己知道的内置方法. __getitem__ __setitem__ __delitem__ 这三个方法是字典类的内置方法,分别对应 ...

  4. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  5. 7.python字符串-内置方法分析

    上篇对python中的字符串内置方法进行了列举和简单说明,但这些方法太多,逐一背下效率实在太低,下面我来对这些方法按照其功能进行总结: 1.字母大小写相关(中文无效) 1.1 S.upper() -& ...

  6. 6.python字符串-内置方法列举

    所谓内置方法,就是凡是字符串都能用的方法,这个方法在创建字符串的类中,下面是总结: 首先,我们要学习一个获取帮助的内置函数 help(对象) ,对象可以是一个我们创建出来的,也可以是创建对象的那个类, ...

  7. python 字典内置方法get应用

    python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...

  8. 内置方法+lambda是pythonic的利器

    python可以写的非常简洁,通过使用内置的map,reduce,filter,lambda方法,非常具有文艺范. 举个例子,例如 def fromIpToNum(ipAddr):    return ...

  9. 字符串:各种奇葩的内置方法 - 零基础入门学习Python014

    字符串:各种奇葩的内置方法 让编程改变世界 Change the world by program 字符串:各种奇葩的内置方法 或许现在又回过头来谈字符串,有些朋友可能会觉得没必要,也有些朋友会觉得不 ...

随机推荐

  1. VMware克隆虚拟机后mac地址重新设置

    ifconfig eth1   确定新网卡的MAC地址. nmcli con 确定新网卡的UUID vim /etc/udev/rules.d/70-persistent-net.rules 把原et ...

  2. 6.文件所有权和权限----免费设置匿名----Windows键盘记录器----简介和python模块

    文件所有权和权限 touch --help cd Desktop mkdir Folder cd Folder clear touch Test1 Test2 Test3 Test4 ls ls -l ...

  3. docker--搭建docker swarm集群

    10 搭建docker swarm集群 10.1 swarm 介绍 Swarm这个项目名称特别贴切.在Wiki的解释中,Swarm behavior是指动物的群集行 为.比如我们常见的蜂群,鱼群,秋天 ...

  4. 八、Zabbix-应用集、监控项

    一.应用集 1.应用集一般配合监控项使用,它相当于多个同类型的监控项的分类目录 2.添加应用集 (1)配置—>模板—>需要调整的模板—>应用集 (2)添加应用集 (3) (4)查看应 ...

  5. Redis进阶:Redis的主从复制机制

    Redis进阶:Redis的主从复制机制 主从复制机制介绍 单机版的Redis存在性能瓶颈,Redis通过提高主从复制实现读写分离,提高了了Redis的可用性,另一方便也能实现数据在多个Redis直接 ...

  6. KMP字符串匹配 模板 洛谷 P3375

    KMP字符串匹配 模板 洛谷 P3375 题意 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.(如果 ...

  7. P1507NASA食物

    这道题是一个01背包的延伸题,只要透彻理解了,就不难了. 这个题有两个T,一个是体积一个是质量,所以这时候我们必须要加一个for了,同时要优化空间(三维降二维),然后用f[j][k]来表示当体积为j, ...

  8. APP登录时Token认证过程

    1.App登录Token登录机制: 一般第一次安装App后,会让你进行注册后登录,而只要登录成功后,以后的每次启动App都是登录状态, 不需要每次启动时再登录.但有些App你若长期没有启动,它会提示你 ...

  9. 基于BufferedImage的图像滤镜演示

    package chapter2; import javax.imageio.ImageIO;import javax.swing.*;import javax.swing.filechooser.F ...

  10. 微信小程序css篇----flex模型

    一.Flex布局是什么? Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为Flex布局. .box{displ ...