一.内置方法

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. YARN日志聚合相关参数配置

    日志聚合是YARN提供的日志中央化管理功能,它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,且提供一个中央化存储和分析机制.默认情况下,Contain ...

  2. 操作系统(1)——X86-32硬件介绍、实验环境相关配置、uCore部分技巧介绍

    实验环境 本文假设已经创建虚拟机并配置好Ubuntu 16.04(网上太多教程了,所以这里就不赘述了). X86-32硬件介绍 x86指的是80386这种机器(一种32位CPU,在早期得到了广泛的应用 ...

  3. Java——LinkedHashMap源码解析

    以下针对JDK 1.8版本中的LinkedHashMap进行分析. 对于HashMap的源码解析,可阅读Java--HashMap源码解析 概述   哈希表和链表基于Map接口的实现,其具有可预测的迭 ...

  4. Go语言入门篇-命令 与 语法

    一.命令基础 1. go run : 用于运行命令源码文件(如:go run helloworld.go) 只能接受一个命令源码文件以及若干个库源码文件作为文件参数 其内部操作步骤: (1)先编译源码 ...

  5. ssh-config的使用

    使用SSH的配置文件可以在很大程度上方便各种操作,特别适应于有多个SSH帐号.使用非标准端口或者写脚本等情况. man ssh_config 可以查看手册 如果之前是用密码方式来登录SSH,需要先改用 ...

  6. [转帖]Twitter 宣布抛弃 Mesos,全面转向 Kubernetes

    Twitter 宣布抛弃 Mesos,全面转向 Kubernetes http://www.itpub.net/2019/05/06/1788/ 事实标准了.   作者 | 阿里云智能高级技术专家 张 ...

  7. Eureka 源码分析之 Eureka Client

    文章首发于微信公众号<程序员果果> 地址:https://mp.weixin.qq.com/s/47TUd96NMz67_PCDyvyInQ 简介 Eureka是一种基于REST(Repr ...

  8. JS案例经验1

    一 可以通过设置在一个div中的多个div的定位属性为absolute,从而使得这几个元素重叠.他们都脱离了标准流. 二 对于absolute的left和right属性,当left和right同时出现 ...

  9. [VINS]IMU与相机之间旋转量的标定

    VINS-Mono[1]中IMU-Camera外参旋转量\(R_b^c\)的计算方法在他们实验室发的之前的论文有详细讲解[2].视觉利用匹配特征点中的基础矩阵求出相机坐标系下两帧的旋转量\(R_{c_ ...

  10. IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); 时,报COMException

    解决办法: 在Program.cs的Main函数中添加如下代码: ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);