python的魔法方法

__doc__魔法方法

内置函数可以通过

print(内置函数().__doc__)

对函数的文档进行打印输出

'''
__doc__ 推荐使用""""""  打印我们类的注释文档
'''
class Demo(object):
    """
    我是demo的注释
    """
    def __init__(self):
        pass


d = Demo()
print(d.__doc__)

__del__魔法方法

释放内存;该方法只有等全部对象都释放完毕才考虑释放内存的事情,无论是自动调用还是del方法主动调用,关键都在于“”[对象全部释放]

class Demo:
    def __del__(self):
        print("好惨,我被回收了")


d = Demo()
d1 = d
del d
print("-"*20)
# del d1
print("-"*20)

__call__魔法方法

使一个实例变成可调用的对象

class Demo(object):
    def __call__(self, *args, **kwargs):
        print("我可以调用了哟")

d = Demo()
d() # 'Demo' object is not callable

__dict__魔法方法

以字典的形式查看类或者对象的成员,可以说是__dir__的一个子集

lass Demo(object):
    gender = "female"
    def __init__(self):
        self.name = "amy"
        self.__age = 18

    def test(self):
        print("test")


d = Demo()
d.test()
print(d.__dict__)   # dict 查看对象中的实例属性
print(Demo.__dict__)    # 查看类中的成员-->类属性与行为
print(d.__dir__())  # 列表 查看对象的-->成员
print(Demo.__dir__(d))
# print(d._Demo__age)#私有属性的成功访问

__new__魔法方法

在类准备自身实例化时调用;静态方法 创建对象;(@classmethod)

__new__和__init__的不同:

1.前者是静态方法,后者是实例方法

2.前者是创建对象的方法,后者是创建对象之后自动调用的方法

class Demo(object):
    def __init__(self):
        print("__init__")  #2

    def __new__(cls, *args, **kwargs):
        print("__new__")   #1
        return super().__new__(cls)

 

发布了11 篇原创文章 · 获赞 6 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章