python 面向对象 类的内置方法
- 判断是不是类cls的对象
class A:
pass a = A()
print(isinstance(a,A)) - 判断类sub是不是super的子类
class A:
pass class B(A):
pass print(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] = value def __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.__instance
cls.__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 = name
self.length = length def __len__(self):
return self.length hsr = Life('hsr',100)
print(len(hsr)) - __hash__
#对对象进行hash运算
class Student:
def __init__(self,no,name):
self.no = no
self.name = name def __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 = name
self.length = length def __len__(self):
return self.length def __eq__(self, other):
return other.length == self.length hsr = Life('hsr',100)
ttt = Life('ttt',100)
print(hsr == ttt) - set依赖hash和eq方法,实现了这两个,对象就可以放入set实现去重
python 面向对象 类的内置方法的更多相关文章
- python面向对象--类的内置方法
#isinstance(obj,cls)判断obj是否是类cls的实例 #issubclass(cls,cls1)判断cls是否是cls1的子类或派生类 class Foo: pass class B ...
- python面向对象 : 反射和内置方法
一. 反射 1. isinstance()和issubclass() isinstance( 对象名, 类名) : 判断对象所属关系,包括父类 (注:type(对象名) is 类名 : 判断对象所属 ...
- Python面向对象编程及内置方法
在程序开发中,要设计一个类,通常需要满足以下三个要求: [1]类名 这类事物的名字,满足大驼峰命名法 [2]属性 这类事物具有什么样的特征 [3]方法 这类事物具有什么样的行为 定义简单的类: 定义只 ...
- python 面向对象反射以及内置方法
一.反射 什么是反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),python中一切皆对象,都可以使用放射. 反射的四种方法: hasattr:hasattr(objec ...
- python面向对象--类的内置函数
#isinstance(obj,cls)判断obj是否是类cls的实例 #issubclass(cls,cls1)判断cls是否是cls1的子类或派生类 class Foo: pass class B ...
- day28 面向对象:反射,内置函数,类的内置方法
面向对象进阶博客地址链接: http://www.cnblogs.com/Eva-J/articles/7351812.html 复习昨日内容: # 包 # 开发规范 # # hashlib # 登录 ...
- python学习之老男孩python全栈第九期_day027知识点总结——反射、类的内置方法
一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print ...
- python基础语法18 类的内置方法(魔法方法),单例模式
类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法. 类的内置方法,会在某种条件满足下自动触发. 内置方法如下: __new__: 在__ini ...
- python -- 类中--内置方法
isinstance 和 issubclass isinstance(obj,b) 检查是否obj是否是类b的对象 class A(object):pass class B(A):pass b=B ...
随机推荐
- 在windows环境中关于 pycharm配置 anaconda 虚拟环境
因为要在windows系统系统中练习tensorflow,所以需要配置一下环境(来回的开关机切换环境太麻烦了......) 首先安装anaconda3,我选择的版本是Anaconda3 5.1.0,对 ...
- uni-app 之验证码
手机APP---验证码 最近公司在开发手机APP,app避不可免的就是登录了,emmmm 登录验证码那必须的是有的,我们公司发给我们的图片是酱紫的~~ 这个要求大家应该都能看懂,做这个手机号啊,验证码 ...
- Ubuntu中打开RAR文件
在安装完ubuntu后,默认是不支持RAR文档的,当用鼠标双击一个RAR文档的时候会给我们上面的提示! 如果想打开RAR的文档就需要安装一个RAR解析,方法是打开终端,输入: 复制代码代码如下: su ...
- 【codeforces 803E】Roma and Poker
[题目链接]:http://codeforces.com/contest/803/problem/E [题意] 给你一个不完整的胜负平序列(不完整是指中间有些地方为问号,让你自己选择胜负平) 让你复原 ...
- Myeclipse学习总结(5)——Myeclipse常用快捷键再学习
Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctrl+Q 定位到最后编辑的地方 Ctrl+L 定位在某行 Ctrl+O 快速显示 OutLine Ctrl+T 快速显示当前类的继承结构 ...
- Ajax-URL 防止数据缓存,添加时间戳
url:CONTEXTPATH + "/dataService/getSourceStatics?type=0&t="+new Date().getTime(),
- 用户体验之如何优化你的APP
用户体验,速度为王,来几个优化APP“速度”的建议. 1.后台执行 毋庸多言,已是通常做法. 一般在执行下载任务时让其在后台运营,让用户有精力去做别的事情. 后端加载 2.提前显示 客户端与WEB的数 ...
- HDU 2838 (树状数组求逆序数)
题意: 给你N个排列不规则的数(1~N),任务是把它从小到大排好,每次仅仅能交换相邻两个数,交换一次的代价为两数之和.求最小代价 思路:对于当前数X.我们如果知道前面比它大的数有多少,如果为K,那么有 ...
- 【简单的案例分享,停机10分钟】10204升级CRS&DB的PSU至102044
发现一个现象,AIX5.3+HACMP+10.2.0.4RAC+RAW的环境,执行五六年的数据库crsd.log都会报下面错误: ----------------------------------- ...
- SVG中一些较为具体的文档
绘制线头尾标记 http://tutorials.jenkov.com/svg/marker-element.html 微软关于svg的文档 http://msdn.microsoft.com/zh- ...