• Python __slots__的使用


    每个类在实例化时都会被分配一个dict,通过 实例.__dict__来访问,dict记录了实例的所有属性

    如:

    class Man(object):
    pass

    man = Man()
    print(man.__dict__) # 输出的结果是 {}
    man.name = 'Hel'
    man.length = '152'
    print(man.__dict__) # 输出的结果是 {'name': 'Hel', 'length': '152'}

    变量__slots__是class从object继承的一个属性,用来定义类的可以绑定的属性,当在类中定义了__slots__之后,这个类就只能拥有定义的属性,同时该类的实例不能分配__dict__.

    class Man(object):
    __slots__ = ('age', 'length', 'name')

    print(man.__dict__) # 输出AttributeError: 'Man' object has no attribute '__dict

    类的实例只能有slots定义的属性,如果使用定义之外的属性,将会报错

    class Man(object):
    __slots__ = ('age', 'length', 'name')

    man = Man()
    man.name = 'Hel'
    man.length = '152'
    man.gender = 'male' # 输出AttributeError: 'Man' object has no attribute 'gender'

    一般情况下,使用__slots__的类需要直接继承(object)

    在继承自己创建的类时,不会继承__slots__属性

  • 相关阅读:
    单例模式
    工厂模式
    代理模式
    网络问题
    java中System.getProperty()方法详解
    配置logback.xml文件来实现日志文件输出
    Spring MVC 文件上传与下载快速学习
    SpringMVC中的视图和视图解析器
    JSON的概述和简单的操作
    BeanValidate中的注解
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8575572.html
Copyright © 2020-2023  润新知