python中self 和cls区别
2020-05-21 本文已影响0人
土豆特别想爬山
类的方法有三种:
一、是通过def定义,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问;
二、是在def前面加上@classmethod,这种类方法的一个特点就是可以通过类名去调用,但是也必须传递一个参数,一般用cls表示class,表示可以通过类直接调用;
三、是在def前面加上@staticmethod,这种类方法是静态的类方法,参数可以为空,支持类名和对象两种调用方式;
举个例子:
class A(object):
def fun1(self):
pass
@classmethod
def fun2(cls):
pass
@staicmethod
def fun3():
pass
如果想调用fun1,只能创建一个对象,才能调用:
a = A()
a.fun1()
如果想调用fun2,直接A.fun2()就可以了;
如果想调用fun3,a.fun3()或者A.F