对象

1. python创建实例后,实例将由引用计数来管理,如果引用计数达到0,实例将被销毁,实例被销毁时,解释器会调用与对象相关联的__del__()方法。使用del语句可以删除对象引用,但是del语句通常不会直接调用__del()__方法。

2. 特殊变量__slots__

通过定义特殊变量__slots__类可以限制对合法实例属性名称的设置。定义__slots__后,能在实例上分配的属性名被限制在给定的范围内。否则将引发AttributeError异常。这种限制可以阻止其他人向实例添加不合法的属性,或则防止用户拼写错误。  使用__slots__实际上是对内存和执行速度的一种优化。使用__slots__的类的实例不再使用字典存储实例数据,相反使用更加紧凑的数据结构。 __slots__与继承的配合使用需要一定的技巧。如果类继承自使用__slots__的基类,那么他也应定义自己的__slots__(即使它不添加任何属性),如果忘记这点,派生类的运行速度将更慢。 此外,没有必要向__slots__添加方法或特性名称,因为他们存储在类中,而不是实例中。

原文地址:https://www.cnblogs.com/fly-xiang-zhao/p/3698937.html