向量类
Vector2d
类是自定义的一个python类,实现了一些基础的魔法方法,透过这个类可以对python的类进行一定的了解。
1 | from array import array |
@classmethod
与@staticmethod
1 | class demo: |
@classmethod
第一个参数接受类本身,而不是实例本身。所以被 @classmethod
装饰的函数都是类方法,只能对类进行操作,不能对实例进行操作。
具体可以参照第一个代码的使用。
@staticmethod
与普通的方法没有太大的区别,唯一的区别就是定义的地方不一样而已。
格式化显示
内置的format()
函数和str.format()
方法都会调用.__format__(format_spec)
方法。在没有实现__format__
方法时,会返回str(my_object)
。具体的format()
使用方法在此不具体讲解。
__slots__
类属性
- 使用
__slots__
将所有的实例属性存储到一个可迭代对象中,从而避免使用消耗内存的__dict__
属性。 - 但是缺点是在类中定义了
__slots__
属性之后,实例不能拥有__slots__
之外的属性。另外,不要把__dict__
属性也放到__slots__
中,原因太明显了。 - 用户自定义的类中默认有
__weakref__
属性,但是如果使用了__slots__
记得将其放进去,否则该类将不再支持弱引用。 __slots__
属性不可以继承。
覆盖类属性
1 | Vector2d.typecode = 'b' |
第一种方式修改类属性,第二种方式用实例属性去覆盖类属性。