码迷,mamicode.com
首页 > 其他好文 > 详细

类的一些内置方法

时间:2019-10-07 00:44:20      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:foo   png   elf   一个   nbsp   __slots__   pre   删除   slot   

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

技术图片  

 

类的一些内置方法

标签:foo   png   elf   一个   nbsp   __slots__   pre   删除   slot   

原文地址:https://www.cnblogs.com/dabai123/p/11627784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!