一个简单的二维向量类
上述实例包含了一个Vector类的实现,其包含了__repr__, __abs__, __add__, 以及__mul__四个特殊方法,下面介绍一下特殊方法:
如何使用特殊方法
特殊方法的存在是为了被Python解释器调用的,你自己并不需要调用它们,也就是说没有my_object.__len__()这种写法,而应该使用len(my_object)。在执行len(my_object)的时候,如果my_object是一个自定义类的对象,那么Python会自己去调用其中由你实现的__len__方法。
在上述实例中,我们在__repr__的实现中,用到了%r来获取对象各个属性的标准字符串表示形式,这是个好习惯,它暗示了一个关键:Vector(1,2)和Vector('1','2')是不一样的,因为向量对象的构造函数只接受数值,不接受字符串。