python中的魔法属性和方法

魔法属性:

首先,我们先谈一谈什么叫做魔法属性?
魔法属性和方法是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_、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中的魔法方法及属性

猜你喜欢

转载自blog.csdn.net/weixin_38819889/article/details/86551420