如何在Python中定义类方法和修改类属性?
Python中的类还可定义使用@classmethod修饰的类方法和使用@staticmethod修饰的静态方法,下面分别介绍这两种方法。
类方法与实例方法有以下不同:
(1)类方法使用装饰器@classmethod修饰;
(2)类方法的第一个参数为cls而非self,它代表类本身;
(3)类方法即可由对象调用,亦可直接由类调用;
(4)类方法可以修改类属性,实例方法无法修改类属性。
下面分别介绍如何定义类方法,以及如何使用类方法修改类属性。
1.定义类方法
类方法可以通过类名或对象名进行调用,其语法格式如下:
类名.类方法
对象名.类方法
定义一个含有类方法use_classmet()的类Test,示例代码如下:
classTest:
@classmethod
defuse_classmet(cls):
print("我是类方法")
创建类Test的对象test,分别使用类Test和对象test调用类方法use_classmet(),具体代码如下:
test=Test()
test.use_classmet()#对象名调用类方法
Test.use_classmet()#类名调用类方法
运行代码,结果如下所示:
我是类方法
我是类方法
从输出结果中可以看出,使用类名或对象名均可调用类方法。
2.修改类属性
在实例方法中无法修改类属性的值,但在类方法中可以将类属性的值进行修改。例如,定义一个Apple类,该类中包含类属性count、实例方法add_one()和类方法add_two(),示例代码如下:
classApple(object):#定义Apple类
count=0#定义类属性
defadd_one(self):
self.count=1#对象方法
@classmethoddefadd_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
相关推荐HOT
更多>>python怎么检验是否安装和如何安装pip工具?
学习过Python的小伙伴都知道,想要安装Python扩展框架就需要使用到pip工具来安装,但有些Python版本并没有内置pip安装工具,今天小编就来教大家...详情>>
2023-11-05 19:27:45linux清空信息的命令?
Linux文件系统操作命令1、df命令:用于显示文件系统的磁盘空间使用情况,包括已用空间、可用空间、文件系统类型等。示例命令:df -h du命令:用...详情>>
2023-10-30 04:30:18linux中清理磁盘命令?
Linux下清除磁盘分区及残留raid信息linux安装忽略硬盘raid信息dmnoraid解决办法:需要重启进入安装选择菜单时,按TAB键,会进入到Linux的命令行...详情>>
2023-10-29 22:05:11linux命令行新手教程?
怎样从零开始学习linux?1、安装学习Linux:安装Linux系统,并从简单的操作开始,学习Linux的安装、管理、维护等知识。 加入Linux社区:加入Linu...详情>>
2023-10-29 20:08:10