• 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传递当前类对象。

  • 相关阅读:
    Odoo Entypo Regular Icon List
    Ubuntu 循环遍历当前目录下所有文本文件中的字符
    FairyGUI学习
    FairyGUI和NGUI对比
    热更新有多重要?游戏代码热更新杂谈
    收藏的链接
    Vuforia AR实战教程
    BleedTree动画混合树
    Unity3d导出安卓版本
    Unity+高通Vuforia SDK——AR
  • 原文地址:https://www.cnblogs.com/yuky/p/9756832.html
Copyright © 2020-2023  润新知