类的一些内置方法

一、__slots__

用来取代 __dict__  优势是省内存

附加功能是只能创建slots 定义好的key

注意:不要乱用,用了就没有__dic__方法了

class Foo:
    __slots__ = ['name','age'] #这里可以是列表或者单个字符串,定义key值

f1 = Foo()
print(f1.__slots__)
f1.name = 'jinling'  #只能给前面定义好的key设置值
print(f1.name)
f1.age = 18     #只能给前面定义好的key设置值
print(f1.age)

 

二、__doc__

查看类文档,该属性无法继承

class Foo:
    '我喜欢一个女孩'
    pass
class Bar(Foo):
    pass
print(Foo.__doc__)
print(Foo.__dict__)
print(Bar.__dict__)

  

三、__module__  : 查看当前操作的对象在哪个模块

__class__ :查看当前操作的对象的类是什么

#syudy1

class Foo:
    print('她还没回我的消息')

#lala

from syudy1 import Foo
f1 = Foo()
print(f1.__module__)
print(f1.__class__)

四、__del__ 析构方法

当对象在内存中被释放时,自动触发执行,由python解释器自动去完成,平时不用管

class Foo:

    def __del__(self):
        print("执行我啦")

f1 = Foo()
del f1
print("----------------->")

  

class Foo:

    def __del__(self):
        print("执行我啦")

f1 = Foo()
# del f1
print("----------------->")

  

上面两个程序对比一下,为什么下面这个没有执行删除操作也触发释放内存了呢?

因为呢,在整个程序运行结束的时候,也会自动释放上面类占用的内存,所以就触发啦  

五、__call__

对象后面加括号,触发执行

class Foo:
    def __call__(self, *args, **kwargs):
        print('我执行啦')

f1 = Foo()
f1() #执行Foo下的__call__
Foo() #执行的是Foo所属类下的__call__

  

 

posted @ 2019-10-06 23:24  绝世刘  阅读(159)  评论(0编辑  收藏  举报