如何在Python中定义类方法和修改类属性?

发布时间:2021-09-13 08:31:23 人气:536 作者:admin

如何在Python中定义类方法和修改类属性?

  Python中的类还可定义使用@classmethod修饰的类方法和使用@staticmethod修饰的静态方法,下面分别介绍这两种方法。

  类方法与实例方法有以下不同:

  (1)类方法使用装饰器@classmethod修饰;

  (2)类方法的第一个参数为cls而非self,它代表类本身;

  (3)类方法即可由对象调用,亦可直接由类调用;

  (4)类方法可以修改类属性,实例方法无法修改类属性。

  下面分别介绍如何定义类方法,以及如何使用类方法修改类属性。

  1.定义类方法

  类方法可以通过类名或对象名进行调用,其语法格式如下:

  类名.类方法

  对象名.类方法

  定义一个含有类方法use_classmet()的类Test,示例代码如下:

  class Test:

  @classmethod

  def use_classmet(cls):

  print("我是类方法")

  创建类Test的对象test,分别使用类Test和对象test调用类方法use_classmet(),具体代码如下:

  test = Test()

  test.use_classmet() # 对象名调用类方法

  Test.use_classmet() # 类名调用类方法

如何在Python中定义类方法和修改类属性?

  运行代码,结果如下所示:

  我是类方法

  我是类方法

  从输出结果中可以看出,使用类名或对象名均可调用类方法。

  2.修改类属性

  在实例方法中无法修改类属性的值,但在类方法中可以将类属性的值进行修改。例如,定义一个Apple类,该类中包含类属性count、实例方法add_one()和类方法add_two(),示例代码如下:

  class Apple(object): # 定义Apple类

  count = 0 # 定义类属性

  def add_one(self):

  self.count = 1 # 对象方法

  @classmethod def add_two(cls):

  cls.count = 2 # 类方法

  创建一个Apple类的对象apple,分别使用对象apple和类Apple调用实例方法add_one()和类方法add_two(),修改类属性count的值,并在修改之后访问类属性count。示例代码如下:

  apple = Apple()

  apple.add_one()

  print(Apple.count)

  Apple.add_two()

  print(Apple.count)

  运行程序,结果如下所示:

  0

  2

  从输出结果中可以看出,调用实例方法add_one()后访问count的值为0,说明属性count的值并没有被修改;调用类方法add_two()后再次访问count的值为2,说明类属性count的值被修改成功。

  可能大家会存在这样的疑惑,在实例方法add_one()中明明通过“self.count = 1”重新为count赋值,为什么count的值仍然为0呢?这是因为,通过“self.count = 1”只是创建了一个与类属性同名的实例属性count并将其赋值为1,而非对类属性重新赋值。通过对象apple访问count属性进行测试:

  print(apple.count)

  运行程序,结果如下所示:

  1

  以上是关于如何在Python中定义类方法和修改类属性的介绍,由多测师亲自撰写。  https://www.e70w.com/

返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线