Python 普通方法 静态方法 类方法的定义和使用场景
类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响。以Dog类为例,类就像一个对象工厂,可以生产一个或多个实例对象。
class food(object):
def get_food(self, n):
print "%s,%s" % (self,n)
@staticmethod
def get_static_food(n):
print " %s,%s" % (self,n)
@classmethod
def get_class_food(cls, n):
print "%s,%s" % (cls,n)
my_class = food() # 实例化 ,my_class是实例对象
区别
-
调用静态方法可以无需创建对象,静态方法参数没有实例参数 self, 也就不能调用实例参数
-
类方法可以被对象调用,也可以被实例调用;传入的都是类对象,主要用于工厂方法,具体的实现就交给子类处理
-
实例方法是一个普通的函数,类方法和静态方法都是通过函数装饰器的方式实现的;
-
实例方法需要传入self,类方法需要传入cls参数,静态方法无需传入self参数或者是cls参数(但不等同于不能传入参数)
应用场景:
类方法不需要创建实例对象,直接处理类对象的逻辑;静态方法将与类对象相关的某些逻辑抽离出来,不仅可以用于测试,还能便于代码后期维护。
实例方法和类方法能够改变实例对象或类对象的状态,而静态方法不能。