• <em id="ommgs"></em>
    <dd id="ommgs"><center id="ommgs"></center></dd>

    1. <em id="ommgs"><acronym id="ommgs"><u id="ommgs"></u></acronym></em>
      首 页IT知识库翔宇问吧收藏内容
      当前位置:翔宇亭IT乐园IT知识库Python

      Python classmethod()方法

      减小字体 增大字体 作者:本站  来源:本站整理  发布时间:2021-08-31 16:13:55

      python classmethod()是Python标准库中的一个内置方法。在Python中,有三种类型的方法,分别是:实例方法、类方法和静态方法。

      这篇文章首先介绍一下类方法的含义及使用方法。

      classmethod()方法是什么

      在Python中,类方法是可以使用类名直接调用的方法,类方法可以在类的所有对象中进行共享。classmethod()方法可以把类中的一个方法转化为类方法,但要求类中定义的那个方法的第一个参数是 cls ,当然这只是约定俗成的,使用其他标识符也可以,主要用于隐式的表示类自身,以调用类的属性、方法,以及实例化对象等,这点与实例方法中的 self 参数相似。

      类方法即可以使用类来调用(如C.f()),又可以使用类的实例来调用(如C().f())。如果类方法由派生类来调用,则派生类的对象将作为classmethod()的第一个参数。

      Python中的类方法与JavaC#等中的静态方法不同,这些问题将在今后的文章中进行探讨。

      Python classmethod()方法

      classmethod()的语法

      该方法的语法格式如下:

      classmethod(function)

      参数

      function:用于指定类中转换为类方法的方法名称,当然也应该包含类名。

      返回值

      该函数没有返回值。

      classmethod()使用示例

      下面使用实例来说明classmethod()方法的具体使用过程。

      class Hello:
          word = "你好"

          def SayHello(cls):
              print(cls.word)

      #定义一个实例
      h = Hello()
      #实例调用SayHello
      h.SayHello()
      #Hello.SayHello() #这时使用会报错

      #将SayHello指定为类方法
      Hello.SayHello= classmethod(Hello.SayHello)
      #用实例来调用
      h.SayHello() #你好
      #用类方法
      Hello.SayHello() #你好

      #用实例修改word的值
      h.word="关注:优雅的代码"
      h.SayHello() #你好
      Hello.SayHello() #你好

      #用类名修改word的值
      Hello.word="优雅的代码"
      h.SayHello() #优雅的代码
      Hello.SayHello() #优雅的代码

      输出结果如下:(上面代码为了让大家看得清楚,使用注释方法也注释了输出内容。)

      你好
      你好
      你好
      你好
      你好
      优雅的代码
      优雅的代码

      从上面的代码及输出结果可以看出:

      (1)类方法中可以访问类的变量和方法;

      (2)类方法可以使用类名调用,也可以使用类的实例调用;

      (3)把一个方法转换成类方法后,使用实例调用时只能读取类共享的变量值,无法获取实例的变量值;

      (4)类方法不能获取实例的变量值,只能读取类共享的变量值,即类变量的默认值或使用类名调用变量修改的值。

      下面再看一个例子:

      class Hello:
          word = "你好"

          def SayHello(self):
              print(self.word)

          def Say(cls, w):
              cls.word = w
              cls.SayHello()

      Hello.SayHello = classmethod(Hello.SayHello)
      Hello.Say = classmethod(Hello.Say)

      Hello.SayHello()
      Hello.Say("欢迎关注微信订阅号:优雅的代码")

      输出结果如下所示:

      你好
      欢迎关注微信订阅号:优雅的代码

      这段代码主要演示类方法带有其它参数的情况。

      classmethod()方法是在Python 2.2版本加进来的,但很明显这种定义类方法的过程还是很麻烦,在Python2.4版本中使用方法修饰符的方法来实现,即在类中需要定义类方法上面使用@classmethod修饰符来指定该方法为类方法。其基本语法格式如下:

      class className:
          @classmethod
          def funname(cls, arg1,arg2,...):
              #方法的相关代码

      上面的@classmethod是funname()方法的修饰符,它指示funname()是一个类方法。下面看一个具体的例子:

      class Student:
          age = 23

          @classmethod
          def printAge(cls):
              print(cls.age)

      Student.printAge()

      输出结果:

      23

      使用@classmethod修饰符指定的类方法与上面所讲的要求相同。

      以上讲解了关于Python中classmethod()方法和@classmethod修饰符的作用,如有问题,欢迎留言。
       

      微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

      个人成长离不开各位的关注,你的关注就是我继续前行的动力。

      知识评论评论内容只代表网友观点,与本站立场无关!

         评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
      愿您的精彩评论引起共鸣,带来思考和价值。
      用户名: 查看更多评论
      分 值:100分 90分 80分 70分 60分 40分 20分
      内 容:
      验证码:
      关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
      本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
      Copyright © 2007-2021 biye5u.com. All Rights Reserved.
      japanese日本熟妇photo