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 相关文章推荐
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
java中两个byte数组实现合并的示例
May 09 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
python K近邻算法的kd树实现
Sep 06 Python
Python 移动光标位置的方法
Jan 20 Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 Python
Python 解析xml文件的示例
Sep 29 Python
详解python模块pychartdir安装及导入问题
Oct 22 Python
Python使用UDP实现720p视频传输的操作
Apr 24 Python
Python中异常处理用法
Nov 27 Python
Python实现数据的序列化操作详解
Jul 07 Python
Python答题卡识别并给出分数的实现代码
Python 中的单分派泛函数你真的了解吗
Jun 22 #Python
Python实现DBSCAN聚类算法并样例测试
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 #Python
利用Python第三方库实现预测NBA比赛结果
Django实现drf搜索过滤和排序过滤
python生成可执行exe控制Microsip自动填写号码并拨打功能
You might like
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
Python实现图像几何变换
2015/07/06 Python
Python中turtle作图示例
2017/11/15 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
快速创建python 虚拟环境
2020/11/28 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
《燕子专列》教学反思
2014/02/21 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
反邪教教育心得体会
2016/01/15 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
详解NodeJS模块化
2021/06/15 NodeJs