__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)