版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
1、实例方法(普通方法)
需要使用对象中封装的值,如self.name,就可以使用实例方法。
class Foo:
def __init__(self, name):
self.name = name
# 实例化方法(一般方法)
def f1(self):
print(self.name)
obj = Foo('Thanlon')
obj.f1()
2、静态方法
如果方法无需使用对象中封装的值,那么就可以使用静态方法。写静态方法时,方法上方需要写@staticmethod,方法中参数可有可无,参数中不可以用self会出错,解释器执行时也不会将self自动传入参数列表。
class Foo:
def __init__(self, name):
self.name = name
# 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
@staticmethod
def f2():
print('静态方法') # 没有使用对象封装的值
Foo.f2() # 可以通过类调用静态方法
obj = Foo('Thanlon')
obj.f2() # 也可以通过对象调用方法
静态方法调用时,可以使用类.方法名,也可以使用对象.方法名,但推荐类来调用(调用字段的时候也是)。
3、类方法
如果在方法中会使用到当前类,那么就可以使用类方法。
定义类方法时,方法上方写@classmethod,方法中至少有一个参数cls
class Foo:
def __init__(self, name):
self.name = name
@classmethod
def show(cls): # 和实例方法一样至少有一个参数,自动传递当前类
print(cls)
Foo.show()
f = Foo('')
f.show()
'''
类方法! <class '__main__.Foo'>
'''
类方法和静态方法一样,可以使用类.方法名,也可以使用对象.方法名,但推荐类来调用。