python中的class_static的@classmethod的巧妙用法


Posted in Python onJune 22, 2021

python中的class_static的@classmethod的使用 classmethod的使用,主要针对的是类而不是对象,在定义类的时候往往会定义一些静态的私有属性,但是在使用类的时候可能会对类的私有属性进行修改,但是在没有使用class method之前对于类的属性的修改只能通过对象来进行修改,这是就会出现一个问题当有很多对象都使用这个属性的时候我们要一个一个去修改对象吗?答案是不会出现这么无脑的程序,这就产生classmethod的妙用。请看下面的代码:

class Goods:
    __discount = 0.8
    def __init__(self,name,money):
        self.__name = name
        self.__money = money
    @property
    def price(self):
        return self.__money*Goods.__discount
    @classmethod
    def change(cls,new_discount):#注意这里不在是self了,而是cls进行替换
        cls.__discount = new_discount

apple = Goods('苹果',5)
print(apple.price)
Goods.change(0.5) #这里就不是使用apple.change()进行修改了
print(apple.price)

上面只是简单的列举了class method的一种使用场景,后续如果有新的会持续更新本篇文章 2.既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢

从它们的使用上来看,
@staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。
@classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。

如果在@staticmethod中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。
而@classmethod因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。
下面上代码。

class A(object):  
    bar = 1  
    def foo(self):  
        print 'foo'  

    @staticmethod  
    def static_foo():  
        print 'static_foo'  
        print A.bar  

    @classmethod  
    def class_foo(cls):  
        print 'class_foo'  
        print cls.bar  
        cls().foo()  
###执行  
A.static_foo()  
A.class_foo()

以上就是python中的class_static的@classmethod的使用的详细内容,更多关于python classmethod使用的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
用Python实现web端用户登录和注册功能的教程
Apr 30 Python
Python中格式化format()方法详解
Apr 01 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 Python
python实现朴素贝叶斯分类器
Mar 28 Python
Pandas标记删除重复记录的方法
Apr 08 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
Jun 27 Python
超实用的 30 段 Python 案例
Oct 10 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
python中threading开启关闭线程操作
May 02 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
Python答题卡识别并给出分数的实现代码
Python 中的单分派泛函数你真的了解吗
Jun 22 #Python
Python实现DBSCAN聚类算法并样例测试
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 #Python
利用Python第三方库实现预测NBA比赛结果
Django实现drf搜索过滤和排序过滤
python生成可执行exe控制Microsip自动填写号码并拨打功能
You might like
php字符串分割函数explode的实例代码
2013/02/07 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
Python上传package到Pypi(代码简单)
2016/02/06 Python
python之Socket网络编程详解
2016/09/29 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
python输入多行字符串的方法总结
2019/07/02 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
缴纳养老保险的证明
2014/01/10 职场文书
人力资源专员岗位职责
2014/01/30 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
面试自我评价范文
2014/09/17 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技