方法
在python类中,方法分为实例方法,类方法,静态方法
1、实例方法
实例方法是通过实例对象进行调用的,在定义实例方法时,都需要传递一个实例对象进去,一般我们会将这个实例对象定义为self
,当然也可以是其他参数名称。实例在调用实例方法时,会将实例方法解析为为类名.方法名(对象)
,例如下面的一个例子,a.prin()
和A.prin(a)
,实际在调用a.prin()
时,python编译会将a.prin()
转化为A.prin(a)
,
class A:
def __init__(s):
pass
def prin(s):
print("in a")
a = A()
a.prin()
A.prin(a) #和上面通过实例调用的效果相同
2、类方法
类方法需要在方法前要有@classmethod
,用于标识该方法是类方法,在定义类方法是,需要传递一个类对象,一般用cls
作为形参
@classmethod
def function_name(cls[,形参])
方法体
在这里需要注意的是类方法体中,不能出现实例属性和方法,这是因为在调用类方法时并不能保证实例已经生成
class A:
def __init__(s):
pass
@classmethod
def prin(s):
print("in a")
A.prin() #类调用类方法
a = A()
a.prin() #实例调用类方法
3、静态方法
类方法需要在方法前要有@staticmethod
,用于标识该方法是类方法
@staticmethod
def function_name([形参])
方法体
class A:
def __init__(s):
pass
@classmethod
def prin(s):
print("in a")
@staticmethod
def sprin():
print("static function")
A.sprin() #类调用静态方法
a = A()
a.sprin() #实例调用静态方法