一共有三种:对象方法、类方法和静态方法。
它们的相同点是定义的时候都在class底下,在使用上的区别是灵活性不同。它们的调用都是既可以用类也可以用实例调用,但是有的简单有的麻烦。
对象方法定义的时候要传入self,def method_ins(self,随便),就是需要一个实例对象。在正常实例化之后用实例调用它的时候,就不用再传入一个self的参数;但是用类名调用它,就得在相应的位置传入一个实例对象。所以说用类调用对象方法也可以,但这样做明显是多此一举。
类方法定义的时候除了要在def之前加一个@classmethod外,传入的第一个参数是cls,class的缩写,这意味着它调用的是类而不是实例对象。这种情况下,用类名或者对象名调用没区别。
静态方法不传入实例对象,也不传入类对象,它其实就是一个定义在类里边的函数,就好像意大利驻梵蒂冈大使馆位于意大利境内,借贵宝地一用。定义静态方法相当于用类名给这些函数找了个家,打了个包。