zoukankan      html  css  js  c++  java
  • python 静态方法,类方法,类下面的函数区别

    @clssmenthod(类方法) 与 @staticmethod(静态方法) 与类下面的函数的区别: 

    1.@classmethod修饰的方法def name(cls)需要通过cls参数传递当前类本身。

    2.@staticmethod修饰的方法def name()不需要传递参数他和普通的函数是一样的。

    3.类下面的函数def name(self)需要再方法里面加个self参数隐式的传递当前类对象的本身。

    1、@clssmenthod 的使用

    class class_name():

      c=12  #这叫类属性

      def __init__(self,a,b):

        self.a=a   #这叫对象属性

        self.b=b

      @clssmenthod

      def  name(cls):

        cls().age()    #调用类里面的方法

        pass

      def  age(self):

        pass

    #调用时候不用实例化这个类,直接类名字.方法名()就行了,要实例化也可以。例如:class_name().name或class_name.name()

    #可以调用其他方法的类属性值或者其他方法,例如:cls.age(),但是不能调用对象属性  。

    #调用类里面的方法,例如:cls().age()

    2、@staticmethod 的使用 (使用一般是,一个函数如果 和类没有关系,和对象也没有关系的时候,就可以使用静态方法)

    class class_name():

      c=12 #这叫类属性

      def __init__(self,a,b):

        self.a=a #这叫对象属性

        self.b=b

      @staticmethod

      def  name():

        pass

    #调用时候不用实例化这个类,直接类名字.方法名()就行了,要实例化也可以。例如:class_name().name或class_name.name()

    #这种方法不可以调用其他方法的属性值与其他方法

    class_name.name()

    3、类下面的函数的使用

    class class_name():

      def __init__(self,a,b):

        pass

      def  name(self):

        pass

    #调用时候需要实例化这个类,也需要传递参数,例如:class_name(a,b).name()

  • 相关阅读:
    zoj 1671 Walking Ant【简单bfs】
    hdoj 2717 Catch That Cow【bfs】
    hdoj 1010 Tempter of the Bone【dfs查找能否在规定步数时从起点到达终点】【奇偶剪枝】
    poj 1321 棋盘问题【dfs】
    [LC] 124. Binary Tree Maximum Path Sum
    [LC] 113. Path Sum II
    [LC] 112. Path Sum
    [LC] 98. Validate Binary Search Tree
    [LC] 39. Combination Sum
    [LC] 159. Longest Substring with At Most Two Distinct Characters
  • 原文地址:https://www.cnblogs.com/hao2018/p/10000965.html
Copyright © 2011-2022 走看看