zoukankan      html  css  js  c++  java
  • 类的一些内置方法

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

      

    一个奋斗中的产品小白
  • 相关阅读:
    我的作业
    代码练习
    prority_queue 的用法 实例
    最短路问题专题
    键值对 Intent
    P103 任意两点之间的最短路问题 Floyd_warshall算法
    第6届山东省ACM省赛总结
    HDU 3247 Resource Archiver[AC自动机+最短路+dp]
    POJ 2778 DNA Sequence [AC自动机 + 矩阵快速幂]
    HDU 2896 病毒侵袭 [AC自动机]
  • 原文地址:https://www.cnblogs.com/dabai123/p/11627784.html
Copyright © 2011-2022 走看看