百科狗-知识改变命运!
--

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

梵高1年前 (2023-11-21)阅读数 41#技术干货
文章标签方法

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()

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

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

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)