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

  • 相关阅读:
    在归并排序中对小数组采用插入排序实现代码
    PAT 1032. Sharing
    1031. Hello World for U
    PAT 1030. Travel Plan
    PAT 1029. Median
    PAT 1028. List Sorting
    PAT 1027. Colors in Mars
    PAT 1026. Table Tennis
    PAT 1025. PAT Ranking
    Several Important Commands in GMT
  • 原文地址:https://www.cnblogs.com/yuky/p/9756832.html
Copyright © 2011-2022 走看看