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_、setitem、delitem:
用于索引操作,如字典。以上分别表示获取、设置、删除数据
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中的魔法方法及属性
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
