__名字__
     类中的特殊方法\内置方法     双下方法     魔术方法   magic_method 类中的每一个双下方法都有它自己的特殊意义
1.__call__ 相当于 对象()
class A:def __call__(self, *args, **kwargs):print('执行call方法了')
a = A()
a()  # 对象() == 相当于调用__call__方法
A()()#相当于先实例化得到一个对象,再对对象(),==>和上面的结果一样,相当于调用__call__方法
结果:
执行call方法了
执行call方法了

class A:def __call__(self, *args, **kwargs):print('执行call方法了')def call(self):print('执行call方法了')
class B:def __init__(self,cls):print('在实例化A之前做一些事情')self.a = cls()self.a()print('在实例化A之后做一些事情')
B(A)
在实例化A之前做一些事情
执行call方法了
在实例化A之后做一些事情

2.__len__  相当于len(obj)
内置函数和类的内置方法是有联系的
class mylist:def __init__(self):self.lst = [1,2,3,4,5,6]self.name = 'alex'self.age = 83def __len__(self):print('执行__len__了')return len(self.__dict__)
l = mylist()
print(len(l))结果:3

class mylist:def __init__(self):self.lst = [1,2,3,4,5,6]self.name = 'alex'self.age = 83def __len__(self):print('执行__len__了')return len(self.lst)
l = mylist()
print(len(l))结果:6

 len(obj)相当于调用了这个obj的__len__方法 __len__方法return的值就是len函数的返回值 如果一个obj对象没有__len__方法,那么len函数会报错
3.__new__  特别重要   开辟内存空间的 类的构造方法
 单例类
class Single:__ISINCTANCE = Nonedef __new__(cls, *args, **kwargs):if not cls.__ISINCTANCE:cls.__ISINCTANCE = object.__new__(cls)return cls.__ISINCTANCEdef __init__(self,name,age):self.name = nameself.age = ages1 = Single('aaaa',83)
s2 = Single('bbbb',40)
print(s1.name)
print(s2.name)
结果:
bbbb
bbbb

4.__str__  str(obj), '%s'  %  obj,  print(obj)

class Student:def __str__(self):return '%s %s %s'%(self.school,self.cls,self.name)def __init__(self,name,stu_cls):self.school = 'oldboy'self.name = nameself.cls = stu_cls
a = Student('asd','55')
print(a)
q = Student('qwe','66')
print(q)
print(str(a))   # 内置的数据类型,内置的类,相当于执行__str__
print('学生1 : %s'%a)oldboy 55 asd
oldboy 66 qwe
oldboy 55 asd
学生1 : oldboy 55 asd

 
 
 

转载于:https://www.cnblogs.com/chenyibai/articles/9392953.html

面向对象--内置方法相关推荐

  1. 二. python面向对象(内置方法and析构函数)

    一. 内置方法和析构函数 __str__() 在调用print 打印对象时自动调用 是给用户用的 是一个描述对象的方法__repr__() 是给机器用的在python 解释器里面直接敲对象在回车后调用 ...

  2. 9 [面向对象]-内置方法

    1.isinstance(obj,cls)和issubclass(sub,super) # isinstance(obj,cls)检查是否obj是否是类 cls 的对象class Foo(object ...

  3. python_day21面向对象的进阶(反射,内置方法,)

    # 两个内置函数 *# 反射 *****# 内置方法 *** # 类(定义) # 静态属性 类属性(变量) 直接写在类中,全大写 # 动态属性 方法(函数) self # 类方法 @classmeth ...

  4. 面向对象之反射和其他内置方法

    一.反射 1.概念:主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.简而言之,就是自身调用自身即可实现已定义的某一功能,以达到简化程序的作用. 2.python面向对象中的反射是指通过字符 ...

  5. python如何设计工具类_Python面向对象 --- 类的设计和常见的内置方法

    面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...

  6. Python 入门 —— Python 面向对象:类的创建及其基本内置方法的使用

    Python 面向对象:类的创建及其基本内置方法的使用 首先了解一下什么是面向对象 面向过程: 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. ...

  7. 面向对象-1-类和对象、基础语法、初始化、内置方法和属性

    1. 基本概念 2. 类和对象 例如: 3. 面向对象基础语法 class Cat:def eat(self):print('小猫爱吃鱼')def drink(self):print ('小猫爱喝水' ...

  8. python全栈开发基础【第十七篇】面向对象反射和内置方法

    一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被 ...

  9. python 面向对象_多态、内置方法、反射

    内容: 1.接口思想 2.抽象类思想 3.多态 4.内置方法 5.反射 1.接口思想 建立关联的桥梁,方便管理代码 接口类:用来定义功能的类,位继承它的子类提供功能 该类的功能方法一般不需要实现体,实 ...

最新文章

  1. python序列类型-Python序列类型
  2. 【数学与算法】奇异矩阵、奇异值、奇异值分解、奇异性
  3. 基于消息队列 RocketMQ 的大型分布式应用上云最佳实践
  4. hdu_1861_游船出租_201402282130
  5. 原型模式-prototype
  6. Python常用基础语法
  7. 【EXCEL】去除多余行列
  8. 计算机usb无法读取u盘启动,电脑不能识别U盘PE的解决方法
  9. python关键字参数必须位于位置参数之前_python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)...
  10. Vue获取(返回)上一个路由
  11. 7.Python3标准库--文件系统
  12. 一些获取免费域名的方法
  13. 创建银行账户,实现存款,取款,转账(正解)
  14. Amazon S3 Glacier 上线十周年,云端冷存储的十年
  15. mPOS安全提升之路
  16. 华芯片特微 M33内核 KEIL5环境配置不上问题
  17. 省选专练CF1027F Session in BSU
  18. C语言实现RC4加密算法
  19. 噪声扬尘监测系统 实时监测
  20. 找工作时期望工资是报高点好还是报低点好

热门文章

  1. oracle cdc 关闭,Oracle CDC部署流程
  2. 移动端实现hover效果
  3. Android控件用法总结之EditText
  4. python的符号函数得到的数字类型_Python笔记——数字类型的几个函数
  5. 【SR汇总】基于深度学习方法
  6. UUID工具类及使用
  7. socket编程介绍
  8. 阿里云CentOS服务器挂载数据盘
  9. Android中如何下载文件并显示下载进度
  10. 对lIKE语句的优化