纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术 → Python classmethod装饰器原理及用法解析

Python classmethod装饰器原理及用法解析

lincappu   2020-10-17 我要评论

英文文档:

classmethod(function)

Return a class method for function.

A class method receives the class as implicit first argument, just like an instance method receives the instance. To declare a class method, use this idiom:

class C:
@classmethod
def f(cls, arg1, arg2, ...): ...
The @classmethod form is a function decorator – see the description of function definitions in Function definitions for details.

It can be called either on the class (such as C.f()) or on an instance (such as C().f()). The instance is ignored except for its class. If a class method is called for a derived class, the derived class object is passed as the implied first argument.

Class methods are different than C++ or Java static methods. If you want those, see staticmethod() in this section.

  标记方法为类方法的装饰器

说明:

  1. classmethod 是一个装饰器函数用来标示一个方法为类方法

  2. 类方法的第一个参数是类对象参数在方法被调用的时候自动将类对象传入参数名称约定为cls

  3. 如果一个方法被标示为类方法则该方法可被类对象调用(如 C.f())也可以被类的实例对象调用(如 C().f())

>>> class C:
  @classmethod
  def f(cls,arg1):
    print(cls)
    print(arg1)
    
>>> C.f('类对象调用类方法')
<class '__main__.C'>
类对象调用类方法

>>> c = C()
>>> c.f('类实例对象调用类方法')
<class '__main__.C'>
类实例对象调用类方法

  4. 类被继承后子类也可以调用父类的类方法但是第一个参数传入的是子类的类对象

>>> class D(C):
  pass

>>> D.f("子类的类对象调用父类的类方法")
<class '__main__.D'>
子类的类对象调用父类的类方法

相关文章

猜您喜欢

  • Vue中inheritAttrs的使用实例详解

    本文着重讲解了Vue中inheritAttrs的使用实例详解,文中会用代码示例为大家做详细介绍希望能够帮助到您欢迎大家阅读和收藏..
  • element 动态合并表格的步骤

    本文着重讲解了element 动态合并表格的步骤帮助大家更好的理解和使用vue欢迎大家阅读..

网友评论

Copyright 2020 www.SiJiMeiShi.com 【四季软件园】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式