内置装饰器一:@classmethod、@staticmathod
使用 @classmethod 和 @staticmathod 后,类的方法的调用
- 一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。
- 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。
这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。
@staticmethod 和 @classmethod 都可以直接类名.方法名()来调用,他们的区别
- @staticmethod 不需要表示自身对象的 self 和自身类的 cls 参数,就跟使用函数一样。
- @classmethod 也不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数。
- 如果在 @staticmethod 中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。
- 而 @classmethod 因为持有 cls 参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。
总结:
简单使用的时候使用@staticmethod, 需要调用类的其他属性时使用@classmethod
示例
# -*- coding: utf-8 -*-class Washer:company = "Li"def __init__(self,water=10,scour=2):self._water = waterself.scour = scourself.year = 2010@staticmethoddef spins_ml(spins):# print("company:",Washer.company)# print('year:',self.year)return spins * 0.4@classmethoddef get_washer(cls,water,scour):print("company:",Washer.company)print('year:',self.year)return cls(water,cls.spins_ml(scour))@propertydef water(self):return self._water@water.setterdef water(self,water):if 0 < water <=500:self._water = waterelse:print("set Failure!")@propertydef total_year(self):return 2015 - self.yeardef set_water(self,water):self.water = waterdef set_scour(self,scour):self.scour = scourdef add_water(self):print('Add water:',self.water)def add_scour(self):print('Add scour:',self.scour)def start_wash(self):self.add_water()self.add_scour()print('Start wash...')
参考资料:http://blog.willdx.me/web/面向对象进阶.html
转载于:https://www.cnblogs.com/ronky/p/9884155.html
内置装饰器一:@classmethod、@staticmathod相关推荐
- python的内置装饰器
Python中总共包括三个内置装饰器: 1.staticmethod (静态方法使用) 2. classmethod (类方法) 3.property (把类的方法 ...
- Python笔记-内置装饰器
内置装饰器是指python中自己带的,不要程序员写的 如下代码: class Student(object):def __init__(self, name, score):self.name = n ...
- 32.Python面向对象(五)【描述符、运算符底层、装饰器:闭包-闭包参数-内置装饰器-类装饰器】
目录: 每篇前言: Python面向对象(五) 1.1 描述符 1.2 运算符底层调用的什么? 1.3 装饰器 第一部分--引入门 (1)首先.咱再看遍闭包是啥: (2)然后,咱稍微高级点,看看闭包参 ...
- 内置装饰器wraps的用法
装饰器的作用:再不改变原有功能代码的基础上,为其添加额外的功能.python wraps(内置装饰器)的用法: @wraps(func)的作用:不改变使用装饰器的原有函数func的结构.(比如入参格式 ...
- python内置装饰器property_python之内置装饰器(property/staticmethod/classmethod)
python内置了property.staticmethod.classmethod三个装饰器,有时候我们也会用到,这里简单说明下 1.property 作用:顾名思义把函数装饰成属性 一般我们调用类 ...
- python 三个内置装饰器,python中自带的三个装饰器
说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A(): @propert ...
- python类内置装饰器(一分钟读懂)
property装饰器,用来将一个get方法,转换为对象的属性 添加为property装饰器以后,我们就可以像调用属性一样使用get方法 使用property装饰的方法,必须和属性名是一样的 sett ...
- python内置装饰器property_Python中的内置装饰器之property
装饰器是Python中很重要的一个概念,但是这篇文档不介绍装饰器的实现,我们只需要知道装饰器可以实现一些功能: Python中也包含一些自带的装饰器,这次就说一下属性装饰器property 相关知识点 ...
- Struts2内置拦截器和自定义拦截器
内置拦截器 Struts2中内置类许多的拦截器,它们提供了许多Struts2的核心功能和可选的高级特性.这些内置的拦截器在struts-default.xml中配置.只有配置了拦截器,拦截器才可以正常 ...
最新文章
- 抽象工厂模式 objective-c 版
- Ajax基本案例详解之$.ajax的实现
- 安装linux的准备
- vue devtools 插件安装
- GitHub中watch star fork三个按钮干什么用的?
- ORA-28056:Writing audit records to Windows EventLog failed的问题
- Android自定义view之基础知识
- 在 ML2 中配置 Vlan Network- 每天5分钟玩转 OpenStack(93)
- bypass最新版d盾mysql_Bypass D盾_IIS防火墙SQL注入防御(多姿势)
- 8个前端技术学习网站
- c语言标准体重测试指数分男女,测测你的体脂率附男女标准体脂率对照表
- 动圈耳机振膜_耳机必看!谈动圈式耳机振膜技术
- 迭代法求解递推方程,
- 光线追踪(RayTracing)算法
- 微信小程序 textarea读取到的文本换行问题 以及保存回车换行到后台
- 温控中使用PID控制算法
- Win10 系统安装
- java中 never closed_【Spring】在Java使用Spring时的Resource leak: 'applicationContext' is never closed警告...
- python 数据分类汇总_Python 实现批量分类汇总并保存xlsx文件
- 关于使用echarts堆叠柱状图百分比显示的问题