Python classmethod装饰器原理及用法解析
英文文档:
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:@classmethoddef 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’>子类的类对象调用父类的类方法
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. 解析Spring Boot内嵌tomcat关于getServletContext().getRealPath获取得到临时路径的问题2. javascript单张多张图无缝滚动实例代码3. Spring Boot如何支持嵌入式Servlet容器4. spring IOC中三种依赖注入方式5. 基于Spring AOP proxyTargetClass的行为表现总结6. 使用IntelliJ IDEA 配置安卓(Android)开发环境的教程详解(新手必看)7. 基于JavaScript实现贪吃蛇游戏8. vue 获取到数据但却渲染不到页面上的解决方法9. PHP 工程师面试的四个环节10. vue用elementui写form表单时,在label里添加空格操作

网公网安备