• python笔记---@classmethod @staticmethod


    python定义类方法的三种方式:

    1.常规方式--需要通过self参数隐式的传递当前类对象的实例
    2.@classmethod修饰方式--@classmethod修饰的方法class_foo()需要通过cls参数传递当前类对象
    3.@staticmethod修饰方式--@staticmethod修饰的方法定义与普通函数是一样

    class A(object):
    def function(self, x):
    print("executing function(%s,%s)" % (self, x))
    print('self:', self)
    @classmethod
    def class_foo(cls, x):
    print("executing class_function(%s,%s)" % (cls, x))
    print('cls:', cls)
    @staticmethod
    def static_function(x):
    print("executing static_function(%s)" % x)
    a = A()

    调用方式:

    function调用需要通过实例a,class_function通过类对象或对象实例调用,static_function通过类对象或对象实例调用。

    classmethod必须使用类对象作为第一个参数,而staticmethod则可以不传递任何参数。

    self和cls的区别不是强制的,只是PEP8中一种编程风格,slef通常用作实例方法的第一参数,cls通常用作类方法的第一参数。即通常用self来传递当前类对象的实例,cls传递当前类对象。

  • 相关阅读:
    vue 组件的封装
    原生tab选项卡
    vue 登录验证码
    input type=”file“ change事件只执行一次的问题
    Java容器解析系列(13) WeakHashMap详解
    Java容器解析系列(12) LinkedHashMap 详解
    Java容器解析系列(11) HashMap 详解
    Java泛型之自限定类型
    java Reference
    Thread类源码解析
  • 原文地址:https://www.cnblogs.com/yuky/p/9756832.html
Copyright © 2020-2023  润新知