#Python 的内置函数 classmethod
说明:把一个方法封装成类方法。
#函数说明
def classmethod(fn):
'''
把一个方法封装成类方法
:param fn: 要封装的方法
:return: 封装后的方法
'''
说明
将一个方法封装成类方法,通常以 装饰器 的形式使用。
类方法隐含的第一个参数就是类本身,就像实例方法接收实例作为参数一样。要声明一个类方法,按惯例请使用以下方案:
class C:
@classmethod
def fn(cls, arg1, arg2):
pass
类方法的调用可以在类上进行,也可以在实例对象上进行。通过对象调用时,隐含的第一个参数传入的是类 而不是对象。如果该对象包含此类以外的属性,将无法被访问。
通过派生类(或派生类的实例对象)调用基类的类方法时,隐含的第一个参数传入的是派生类,而不是基类,因此派生类包含的额外属性可以被访问。
注意,类方法不是其它语言中的静态方法,要创建静态方法请使用 staticmethod 装饰器。
参数
fn
- 要封装成类方法的函数
返回值
封装成类方法后的函数。
#示例
class Cat:
name = '薛定谔'
@classmethod
def speak(cls):
print(f'喵喵喵,我叫{cls.name}')
# 通过类调用
Cat.speak()
# 通过对象调用
cat = Cat()
cat.name = '狗' # 给对象实例绑定 name 属性
cat.speak() # 类方法访问的仍是类的 name 属性