对象表示形式
查看对象说明,可以通过__repr__和__str__方法,前者主要用于开发者,后者主要用于用户,这两个方法分别对内置函数repr和str函数提供支持
向量类
备选构造方法
classmethod和staticmethod
staticmethod用的不是特别多
格式化显示
format函数和str.format函数会调对象的__format__(format_spec)方法,上几个例子
format函数只用了格式规范微语言,str.format还用了格式字符串句法。可先了解format,再了解str.format
私有属性和受保护属性
主要有单下划线开头属性和双下划线开头属性,双下划线会隐式名称转化,单下划线开头的属性不会做处理,但起到提示的作用,不建议访问,但也可以访问。无论单还是双下划线都无法避免显式调用私有属性
使用__slots__节省空间
类属性默认存在__dict__里,这个属性是个字典,属性多时,大量实例会占用较多内存,为生内存可使用__slots__属性。使用了__slots__就会避免使用__default__属性,节省内存
__slots__是为了优化,不是为了约束
也可以显式给用slots属性的实例赋予dict属性,这起不到优化作用
注意如果需要自定义类支持弱引用,需要实现__weakref__属性(是属性不是方法),也需要再__slots__中添加该属性名
继承类使用__slots__时,每个子类都要显式实现,因为这个属性不会继承
当然属性不多时,也不是非得使用__slots__
覆盖类属性
实例默认属性可以通过类属性实现,也可通过__init__实现,如需刷新属性,直接继承修改类属性即可