类的一些内置方法

Posted dabai123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类的一些内置方法相关的知识,希望对你有一定的参考价值。

一、__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__

技术图片  

 

以上是关于类的一些内置方法的主要内容,如果未能解决你的问题,请参考以下文章

Python类的内置方法

类的内置方法(魔法方法)

Python 类的内置方法

Python中类的属性方法及内置方法

类的属性类的方法类的内置方法

Python类的内置方法