ʕ·͡ˑ·ཻʔ Daisy 🐾 ◟̆◞̆♥︎
Zou-Wang
点击头像关注

三っ•̀.̫•́)っ 我去宇宙了 ⁽⁽ଘ( ˊᵕˋ )ଓ⁾⁾

面向对象小结

__init__和__call__的区别

	1、__init__()的作用是初始化某个类的一个实例,等同于类的构造器
	2、__call__()的作用是使实例化能够像函数一样被调用,同时不影响实例本身的生命周期(__call__()不影响一个实例的构造和析构,但是__call__()可以用来改变实例的内部成员的值)
	__doc__():类的注释,无法继承给子类

	__str__():对象()会自动执行

	__add__():对象+对象,会自动执行

	__getitem__():对象[key]会自动执行

	__setitem__():对象[key]=value会自动执行

	__delitem__():del对象[key]会自动执行
__init__和__new__的区别

	1、__new__是在实例化创建之前被调用的,因为它的任务就是创建实例然后返回该方法
	2、__init__是当实例对象创建完成后被调用,然后设置对象属性的一些初始值,没有返回值,是一个实例方		法,即当创建一个新实例时,先调用__new__,再调用__init__。__new__的返回值(实例)将传递给				__init__方法的第一个参数,然后__init__给这个实例设置一些初始参数
需要区分:

	__setitem__:对象[key]=value触发
	__getitem__:对象[key]触发
	__setattr__:对象.key=value触发
	__getattr__:对象.key触发
面向对象的反射函数做区分:

	hasattr(object,name):查看对象中是否含有name属性/方法,返回布尔值
	getattr(object,name):从object中获取name属性/方法
	setattr(object,name,value):给object设置name=value
	delattr(object,name):删除object中name

	isinstance():检查对象是否是类的对象,返回True或False
	issubclass():检查一个类是否是另外一个类的子类,返回True或False
posted @ 2019-09-07 17:14  没忘  阅读(115)  评论(0编辑  收藏  举报