魔法属性:
首先,我们先谈一谈什么叫做魔法属性?
魔法属性和方法是Python内置的一些属性和方法,有着特殊的含义。命名时前后加上两个下划线,在执行系统特定操作时,会自动调用。
那么接下来,我们就列举一些常见的魔法属性和方法。
1._init_:
初始化方法,在创建类对象的时候,会自动执行方法
class Student(object):
def __init__(self,name,age):
self.name=name
self.age=age
def 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):
pass
stu=Student()
print(stu.__doc__) #---->输出: 这是我定义的一个hahah方法,你看见没啊
5._call_:
当在对象后面加上(),会自动执行该方法
注:_init__方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 _call 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()
class Student(object):
def __init__(self):
pass
def __call__(self, *args, **kwargs):
print('这是call方法啊')
stu=Student()
stu() # ---->加上()后,会自动执行实例化对象的方法 输出:这是call方法啊
6._dict_:
列出类或对象中所有属性
class Student(object):
gender='男'
def __init__(self,name,age):
self.name=name
self.age=age
def 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=name
self.age=age
def 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=name
self.age=age
def fun(self, *args, **kwargs):
print('这是fun')
stu=Student('老王',19)
print(stu.__class__) #输出-----》<class '__main__.Student'>
9._getitem_、setitem、delitem:
用于索引操作,如字典。以上分别表示获取、设置、删除数据
扫描二维码关注公众号,回复:
4985860 查看本文章
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中的魔法方法及属性