python 面向对象 类的内置方法
- 判断是不是类cls的对象
class A:passa = A() print(isinstance(a,A))
- 判断类sub是不是super的子类
class A:passclass B(A):passprint(issubclass(B,A))
- __str__
#调用str(obj)其实内部就是在调用__str__ #obect内置有一个__str__,调用时,返回调用该方法的对象的内存地址class A:def __str__(self):return 'This is class A'a = A() print(str(a))
- __repr__
#将对象转化为供解释器读取的形式class A:def __repr__(self):return str(self.__dict__)#调用%r和repr,其实都是调用__repr__()#如果类没有str方法,会调用类的repr方法,如果类没有repr,会调用父类的str方法 #反过来如果没有repr方法,不会调用str方法,而会直接调用父类的repr
- __del__
#析构方法:对象在被销毁的时候运行的函数,解释器会自动执行,一般不用实现
- item相关的方法
class Person:def __getitem__(self,key): # 获取return self.__dict__[key]def __setitem__(self,key,value): #设置self.__dict__[key] = valuedef __delitem__(self,key): #删除self.__dict__.pop(key)p = Person() p['a'] = 1 print(p['a']) del p['a'] print(p['a']) #这里会报KeyError
- __new__
#构造方法 #__init__不是构造方法,而是__new__class A:def __new__(cls, *args, **kwargs):return object.__new__(A,*args, **kwargs) #调用object类的__new__方法,返回self#单例模式 #一个类只有一个实例 class A:__instance = False #是否创建了实例的标志位def __new__(cls, *args, **kwargs):if cls.__instance:return cls.__instancecls.__instance = object.__new__(A,*args, **kwargs)return cls.__instance
- __call__
#对象后面加括号执行 #如:对象()或类()()class A:def __call__(self):print('A')a = A() a()
- __len__
#使用len()时执行class Life:def __init__(self,name,length):self.name = nameself.length = lengthdef __len__(self):return self.lengthhsr = Life('hsr',100) print(len(hsr))
- __hash__
#对对象进行hash运算class Student:def __init__(self,no,name):self.no = noself.name = namedef __hash__(self):return hash(str(self.no)+self.name)s = Student(102302,'hsr') print(hash(s))
- __eq__
class Life:def __init__(self,name,length):self.name = nameself.length = lengthdef __len__(self):return self.lengthdef __eq__(self, other):return other.length == self.lengthhsr = Life('hsr',100) ttt = Life('ttt',100) print(hsr == ttt)
- set依赖hash和eq方法,实现了这两个,对象就可以放入set实现去重
转载于:https://www.cnblogs.com/walthwang/p/10402982.html
python 面向对象 类的内置方法相关推荐
- python面向对象 : 反射和内置方法
一. 反射 1. isinstance()和issubclass() isinstance( 对象名, 类名) : 判断对象所属关系,包括父类 (注:type(对象名) is 类名 : 判断对象所属 ...
- python __repr__方法_第8.13节 Python类中内置方法__repr__详解
当我们在交互环境下输入对象时会直接显示对象的信息,交互环境下输入print(对象)或代码中print(对象)也会输出对象的信息,这些输出信息与两个内置方法:__str__方法和__repr__方法有关 ...
- python 类的内置方法_Python 类的常用内置方法
类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,类的内置方法,会在满足某种条件下自动触发. 1.1__new__ __new__:在___init__触发前, ...
- 类的属性、类的方法、类的内置方法
类的属性 变量在类中称为类的属性,函数在类中称为类的方法,类的属性分为以下几种: (1) 公有属性:在类中和类外都能调用的属性,定义的时候与变量的定义一致,如 color = 'yellow' (2) ...
- Python中常用的内置方法
Python中常用的内置方法: 比较大小.求和 如下所示: 代码块: #枚举:返回索引值和对应的value值for i,v in enumerate('westos'):print(i,v)#zips ...
- python中字典类型中的item是什么-python中 字典类型内置方法
python中 字典类型内置方法 一.字典(dict) 1·. 存多个值,但是每一个值都有一个key与之对应.列如存在值有姓名:jiayi.年龄:18.身高:173 2.定义方式 在{}内 ...
- 【python object类及其内置方法】
1. object类 object类所有类的父类,默认所有的类都继承至object类 当我们定义一个类,没有指定他的父类时,它默认就是继承了object类 例如 class Student:pass ...
- python类的内置方法_python面向对象之类中的内置方法
__setattr__,__delattr__,__getattr__,__getattribute__以及标准类型的二次加工 __setattr__,__delattr__,__getattr__的 ...
- python全栈开发基础【第十七篇】面向对象反射和内置方法
一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被 ...
最新文章
- Python使用MySQL数据库(新)
- linux 脚本socket通信,Linux实例:用socket通讯远程执行命令
- java 高效批量插入 sqlserver 数据库
- java反射 获取参数类型_Java反射带参构造创建对象时如何自动转换参数类型
- 在竞争激烈的ToB公司,这个创始团队拒绝一夜暴富,坚持做好产品
- zs040蓝牙模块使用方法_如何使用车载蓝牙播放手机音乐的方法
- 为什么要使用namedtuple?
- Java 中的array数组总结之一
- C#多线程之线程同步篇2
- 数据结构严蔚敏(c语言版)课后算法题答案-线性表
- Linux打印显示时间
- 南京大学计算机学硕博士,2019年南京大学计算机软件研究所招收研究生说明
- Apple商务管理分发
- 广东省教育局 计算机,广东省教育厅关于公布第十七届广东省中小学电脑制作活动获奖结果的通知...
- 用C语言编辑一光年相当于多少米,天文学里一光年是多长的距离?
- 进口牛羊肉抄码器厂家OCR扫数字重量累加扫码机冷库进出口牛羊肉抄码机进口冻肉抄码设备 进口牛羊肉抄码枪
- 三极管+电容 实现的心形灯电路
- 算法学习-图像的数据格式BGR
- 国家自然科学基金 计算机视觉,我院教师焦红伟获批2018年国家自然科学基金面上项目...
- 网康防火墙--上线指南_在线付款接受指南-第2部分
热门文章
- rocketmq原理_消息中间件漫谈:RocketMQ延时消息应用及原理剖析
- go语言打印errors类型变量
- HEVC: 整个编码流程以及相关的函数介绍
- matlab用mex编译.c文件报错---“重定义;不同的基类型”、“宏重定义”等
- 25岁!零基础想转行做软件测试,可以吗?晚是不晚!
- java 博客系统 tale_Java 博客系统 Tale
- 解决PyCharm调试查看变量时一直显示collecting data并报错Timeout waiting for response且看不到任何内容
- DBSCAN聚类(code)
- pytorch CNN
- linux 构造函数 throw,在自定义异常的方法/构造函数签名中带和不带throw()的C++...