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实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
利用Django-environ如何区分不同环境
Aug 26 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
python与字符编码问题
May 24 Python
学Python 3的理由和必要性
Nov 19 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 Python
Python学习开发之图形用户界面详解
Aug 23 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学习笔记之 函数声明
2011/06/09 PHP
基于jQuery的动态表格插件
2011/03/28 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
Python列表生成器的循环技巧分享
2015/03/06 Python
Python使用Supervisor来管理进程的方法
2015/05/28 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
python实现PCA降维的示例详解
2020/02/24 Python
python with语句的原理与用法详解
2020/03/30 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
8种常用的Python工具
2020/08/05 Python
python/golang 删除链表中的元素
2020/09/14 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
清明节网上祭英烈活动总结
2014/04/30 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
科学发展观活动总结
2014/08/28 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
运动会报道稿300字
2014/10/02 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
党支部季度考核意见
2015/06/02 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫