面向对象--内置方法
__名字__
类中的特殊方法\内置方法 双下方法 魔术方法 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
面向对象--内置方法相关推荐
- 二. python面向对象(内置方法and析构函数)
一. 内置方法和析构函数 __str__() 在调用print 打印对象时自动调用 是给用户用的 是一个描述对象的方法__repr__() 是给机器用的在python 解释器里面直接敲对象在回车后调用 ...
- 9 [面向对象]-内置方法
1.isinstance(obj,cls)和issubclass(sub,super) # isinstance(obj,cls)检查是否obj是否是类 cls 的对象class Foo(object ...
- python_day21面向对象的进阶(反射,内置方法,)
# 两个内置函数 *# 反射 *****# 内置方法 *** # 类(定义) # 静态属性 类属性(变量) 直接写在类中,全大写 # 动态属性 方法(函数) self # 类方法 @classmeth ...
- 面向对象之反射和其他内置方法
一.反射 1.概念:主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.简而言之,就是自身调用自身即可实现已定义的某一功能,以达到简化程序的作用. 2.python面向对象中的反射是指通过字符 ...
- python如何设计工具类_Python面向对象 --- 类的设计和常见的内置方法
面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...
- Python 入门 —— Python 面向对象:类的创建及其基本内置方法的使用
Python 面向对象:类的创建及其基本内置方法的使用 首先了解一下什么是面向对象 面向过程: 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. ...
- 面向对象-1-类和对象、基础语法、初始化、内置方法和属性
1. 基本概念 2. 类和对象 例如: 3. 面向对象基础语法 class Cat:def eat(self):print('小猫爱吃鱼')def drink(self):print ('小猫爱喝水' ...
- python全栈开发基础【第十七篇】面向对象反射和内置方法
一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被 ...
- python 面向对象_多态、内置方法、反射
内容: 1.接口思想 2.抽象类思想 3.多态 4.内置方法 5.反射 1.接口思想 建立关联的桥梁,方便管理代码 接口类:用来定义功能的类,位继承它的子类提供功能 该类的功能方法一般不需要实现体,实 ...
最新文章
- python序列类型-Python序列类型
- 【数学与算法】奇异矩阵、奇异值、奇异值分解、奇异性
- 基于消息队列 RocketMQ 的大型分布式应用上云最佳实践
- hdu_1861_游船出租_201402282130
- 原型模式-prototype
- Python常用基础语法
- 【EXCEL】去除多余行列
- 计算机usb无法读取u盘启动,电脑不能识别U盘PE的解决方法
- python关键字参数必须位于位置参数之前_python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)...
- Vue获取(返回)上一个路由
- 7.Python3标准库--文件系统
- 一些获取免费域名的方法
- 创建银行账户,实现存款,取款,转账(正解)
- Amazon S3 Glacier 上线十周年,云端冷存储的十年
- mPOS安全提升之路
- 华芯片特微 M33内核 KEIL5环境配置不上问题
- 省选专练CF1027F Session in BSU
- C语言实现RC4加密算法
- 噪声扬尘监测系统 实时监测
- 找工作时期望工资是报高点好还是报低点好