搞清楚python中实例方法、静态方法和类方法的区别,先上一段代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Person(object): _num = 0 #类变量 def __init__(self, name): self.__name = name
def get_name(self):#实例方法 return self.__name
@staticmethod def say():#静态方法 print("I'm human")
@classmethod def change_num(cls):#类方法 cls._num = cls._num + 1 |
实例方法:
在一个类定义里按照默认方式定义的函数,可以作为这个类的实例对象的方法。
特点:1>至少要有一个表示其调用对象的形参,放在参数表中的第一位,通常命名为self。
2>必须从类的实例对象出发调用该函数。
1 2 3 | p = Person('tom') p.get_name() 'tom' |
静态方法:
可以看作是普通的函数,但是由于某些原因定义在类中,不需要使用self作为特殊参数。
特点:1>定义之前需要加上@staticmethod的装饰器。
2>使用时直接从类中调用,不必和实例相捆绑。
1 2 | Person.say() I'm human |
类方法:
类中定义的最后一种方法为类方法,也是类对象的属性,以属性的形式调用。
特点:1>定义之前要加装@classmethod装饰器。
2>定义时需要有一个表示其调用类的形参,放在参数表的第一位,通常命名为cls。
3>用类方法来实现与本类所有对象有关的操作。比如修改类实例数量计数器。
1 2 3 | Person.change_num() Person._num 1 |