zoukankan      html  css  js  c++  java
  • 类--面向对象 --statismethod和classmethod装饰器的用法

    1)classmethod

    class Classmethod_demo:

      def 

    class Classmethod:  #定义类名
        role='dog'    
        @classmethod
        def func(cls):
              print(cls.role)
    
    Classmethod.func()  
            
    
    classmethod装饰器的作用就是让你在类里面可以调用类里面的左右元素,
    但是会用cls代替类名(Classmethod),如上面代码加上@classmethod以后
    下面的函数括号里面会自动显示cls,而在下面的print里面还可以调用类方法,也就是相当于Classmethod.role。。。

    2)staticmethod

    class Chack:
        role='dog'
        @staticmethod    
        def func():
            print(Chack.role)
    Chack.func()
    
    加入@staticmethod后,下面的func()括号里就不会有self,
    静态方法,让类里面的方法可以直接调用,就像正常函数一样,但是他不能在类里面调用类名。

    总结:classmethod 和staticmethod之间有相同也有不同

    相同的是:他们都不需要对象实例化就可以调用

    不同的是:classmethod、一个会在类里面产生一个cls表示这个类,可以用cls调用内部的方法,而staticmethod是静态的,在内部不会产生元素

    所有调用不了类名。

  • 相关阅读:
    BZOJ 2588
    BZOJ 3524
    BZOJ 3932
    Bzoj1013--Jsoi2008球形空间产生器
    Codevs1743--反转卡片
    Bzoj1208--Hnoi2004宠物收养所
    Bzoj1112--Poi2008砖块Klo
    后缀自动机学习笔记
    Bzoj1588--Hnoi2002营业额统计
    Bzoj1056--Haoi2008排名系统
  • 原文地址:https://www.cnblogs.com/52forjie/p/7373694.html
Copyright © 2011-2022 走看看