python中的魔法属性和方法

魔法属性:

首先,我们先谈一谈什么叫做魔法属性?
魔法属性和方法是Python内置的一些属性和方法,有着特殊的含义。命名时前后加上两个下划线,在执行系统特定操作时,会自动调用。
那么接下来,我们就列举一些常见的魔法属性和方法。

1._init_:

初始化方法,在创建类对象的时候,会自动执行方法

class Student(object):def __init__(self,name,age):self.name=nameself.age=agedef haha(self):print(self.name)print(self.age)stu=Student("蛋蛋",18)	#  ----->自动执行__init__ 方法
print(stu.haha())

2._str_:

在输出打印 对象 时,默认输出该方法的返回值。

class Student(object):def __str__(self):return  "你好可爱啊?" stu=Student()
print(stu)		#  ----->自动执行__str__方法,输出,你好可爱啊

3._del_:

当对象不使用了,在内存中销毁时,自动执行该方法
注:改操作通常是Python的解释器在进行垃圾回收,释放内存时自动完成。

class Student(object):def __del__(self):	# ---->一般情况下,无需定义pass

4._doc_:

把类和方法的一些注释描述信息,打印出来

class Student(object):''' 这是我定义的一个hahah方法,你看见没啊'''def hahah(self):passstu=Student()
print(stu.__doc__)	#---->输出: 这是我定义的一个hahah方法,你看见没啊

5._call_:

当在对象后面加上(),会自动执行该方法
注:_init__方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 _call 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()

class Student(object):def __init__(self):passdef __call__(self, *args, **kwargs):print('这是call方法啊')stu=Student()
stu()       #   ---->加上()后,会自动执行实例化对象的方法 输出:这是call方法啊

6._dict_:

列出类或对象中所有属性

class Student(object):gender='男'def __init__(self,name,age):self.name=nameself.age=agedef fun(self, *args, **kwargs):print('这是fun')#print(Student.__dict__)
stu=Student('老王',19)
print(stu.__dict__)

看看输出结果:

{'name': '老王', 'age': 19}

7._module_:

表示当前操作的对象在那个模块

class Student(object):def __init__(self,name,age):self.name=nameself.age=agedef fun(self, *args, **kwargs):print('这是fun')stu=Student('老王',19)
print(stu.__module__) 	#----->    输出__main__

8._class_:

表示当前操作的对象的类是什么

class Student(object):def __init__(self,name,age):self.name=nameself.age=agedef fun(self, *args, **kwargs):print('这是fun')stu=Student('老王',19)
print(stu.__class__)	#输出-----》

9._getitem_、setitemdelitem:

用于索引操作,如字典。以上分别表示获取、设置、删除数据

class Student(object):def __getitem__(self, key):print('__getitem__', key)def __setitem__(self, key, value):print('__setitem__', key, value)def __delitem__(self, key):print('__delitem__', key)stu =Student()result = stu['k1']      # 自动触发执行 __getitem__
stu['k2'] = '伙计'    # 自动触发执行 __setitem__
del stu['k1']           # 自动触发执行 __delitem__

输出结果:

__getitem__ k1
__setitem__ k2 伙计
__delitem__ k1

参考文献:
python中的魔法方法及属性


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部