zoukankan      html  css  js  c++  java
  • 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__属性

  • 相关阅读:
    Game Engine Architecture 3
    Game Engine Architecture 2
    补码
    工厂模式
    Game Engine Architecture 1
    YDWE Keynote
    3D Math Keynote 4
    3D Math Keynote 3
    3D Math Keynote 2
    OGRE中Any 类型的实现
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8575572.html
Copyright © 2011-2022 走看看