zoukankan      html  css  js  c++  java
  • 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传递当前类对象。

  • 相关阅读:
    ROS 学习遇到的问题记录(持续更新)
    09.07 jQuery 随意整理
    JavaScript 随意整理3
    JavaScript 随意整理2
    css 随意整理 08.08
    html 随意整理
    vue day2
    vue day1
    【copy】必备之常用正则表达式 By 其他博主
    note.js 笔记第二课
  • 原文地址:https://www.cnblogs.com/yuky/p/9756832.html
Copyright © 2011-2022 走看看