zoukankan      html  css  js  c++  java
  • __slots__ __doc__ __module__ __class__ __del__ __call__

    # __slots__ __doc__ __module__ __class__ __del__ __call__
    
    # __slots__ 定义在类中的类属性,如果你有一个属性很少的类,但是有很多实例,为了节省内存可以使用__slots__
    # 在类当中定义了__slots__,实例就没有自己的属性字典__dict__只能使用__slots__提供的属性且不能新增其它属性
    # 实例查看属性时不能使用__dict__,只能使用__slots__
    # 慎用
    class Foo:
        # __slots__ = 'name'  # 设置一个属性  {'name': None}
        __slots__ = ['name', 'age']  # 设置多个属性 {'name': None, 'age': None}
    
    
    f1 = Foo()
    f1.name = 'alex'
    del f1.name
    print(f1.__slots__)  # ['name', 'age']
    # print(f1.__dict__)  # 报错
    
    
    # __doc__ 类的描述信息,注意这个属性是不能继承的
    class A:
        '类的描述信息'
        pass
    
    class B(A):
        pass
    
    print(A.__doc__)    # 类的描述信息
    print(B.__doc__)    # None
    
    
    # __module__ 查看实例从哪个模块产生
    # __class__ 查看实例从哪个类产生
    
    # __del__ 析构方法:当对象在内存中被释放时,自动执行此方法,一般无需定义
    
    # __call__ 对象后面加括号触发执行
    
    class F:
        def __call__(self, *args, **kwargs):
            print('实例执行了')
    
    f2 = F()    # F(),调用了F这个类的基类中的__call__方法
    f2()    # 实例执行了 一个对象加()就是调用这个对象的类中的__call__方法
  • 相关阅读:
    HDU_oj_1003 Max Sum
    HDU_oj_1002 A+B Problem Ⅱ
    [php] 表单注意事项
    【网络基础】网速认知
    [php扩展] php安装扩展注意事项
    谷歌管理flash禁用与开启
    [php] 接口及方法和抽象类及方法的异同点
    【php】php 生僻知识点认知
    [mysql] Can't read from messagefile
    redis 散列学习要点记录
  • 原文地址:https://www.cnblogs.com/dangrui0725/p/9470568.html
Copyright © 2011-2022 走看看