python静态方法、实例方法、类方法使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、静态方法
- 二、实例方法
- 二、类方法
- 四、完整代码
- 总结
前言
日常脚本编写过程中时常会用到python的静态方法、实例方法、类方法,本文主要记录自己对这几种方法的理解
一、静态方法
静态方法使用的关键字是@staticmethod
,通过在方法前追加此装饰器该方法就属于一个静态方法,静态方法个人理解为它既不依赖实例对象也不依赖于类,它只是需要一个载体即可,所以无论是通过类对象直接调用还是实例对象进行调用都是可以的,需要注意的是在静态方法中无法使用实例属性和方法
。所以在日常过程中如果有一个方法实现的功能比较独立的时候就可以考虑使用静态方法实现
class testFunction():classAttribute ='monica'def __init__(self,example_name):self.example_name = example_name@staticmethoddef testStatic():print('静态方法使用')print('调用类属性',testFunction.classAttribute)print('调用实例属性',self.example_name)
if __name__ == '__main__':tf = testFunction('example_monica')#实例对象调用静态方法tf.testStatic()#类对象调用静态方法testFunction.testStatic()
执行结果
二、实例方法
实例方法入参第一个值,默认self
指代当前调用的对象,不建议使用其它关键字代替,实例方法只能由实例对象进行调用
,个人理解由于需要明确是哪个对象在使用当前方法所以实例方法与静态方法和类方法不同对调用者要求严格
class testFunction():classAttribute ='monica'def __init__(self,example_name):self.example_name = example_namedef testExample(self):print('实例方法')print('调用实例属性:',self.example_name)print('调用类属性:',testFunction.classAttribute)
if __name__ == '__main__':tf = testFunction('example_monica')#实例对象调用方法tf.testExample()#类对象调用实例方法testFunction.testExample('test')
执行结果
二、类方法
类方法与静态方法类似需要一个关键词进行装饰@classmethod
且方法入参第一个值默认为cls
。类方法可以通过实例对象和类对象进行调用,在编码过程中发现类方法调用在实例对象初始化之前,故如果实现功能时需要在初始化前做一些校验的工作时可以考虑使用类方法,比如:在写入excel数据前,需要校验文件是否打开,那这个验证的方法即可以使用类方法实现
class testFunction():classAttribute ='monica'def __init__(self,example_name):self.example_name = example_name@classmethoddef testClassMethod(cls):print('类方法')print('调用类属性:',cls.classAttribute)print('调用实例属性:',cls.example_name)
if __name__ == '__main__':tf = testFunction('example_monica')#实例对象调用类方法tf.testClassMethod()#类对象调用类方法testFunction.testClassMethod()
执行结果
四、完整代码
class testFunction():classAttribute ='monica'def __init__(self,example_name):self.example_name = example_name@staticmethoddef testStatic():print('静态方法使用')print('调用类属性',testFunction.classAttribute)print('调用实例属性',self.example_name)def testExample(self):print('实例方法')print('调用实例属性:',self.example_name)print('调用类属性:',testFunction.classAttribute)@classmethoddef testClassMethod(cls):print('类方法')print('调用类属性:',cls.classAttribute)print('调用实例属性:',cls.example_name)
if __name__ == '__main__':tf = testFunction('example_monica')#实例对象调用静态方法tf.testStatic()#类对象调用静态方法testFunction.testStatic()#实例对象调用方法tf.testExample()#类对象调用实例方法testFunction.testExample('test')#实例对象调用类方法tf.testClassMethod()#类对象调用类方法testFunction.testClassMethod()
总结
以上为自己编码过程中的理解,如果不对的地方欢迎大佬指正和解惑
python静态方法、实例方法、类方法使用相关推荐
- python静态方法,类方法,属性方法,实例方法
DAY 3. 静态方法,类方法,属性方法,实例方法 有四种方法,实例方法,类方法,静态方法,属性方法 实例方法 实例方法的第一个参数是self,他会指向类的实例化对象,只能被对象调用,如 class ...
- [Dynamic Language] Python 静态方法、类方法、属性
突然发现Python属性是比较有意思的,属性是继承的,先看下面代码: 38 class ABeen(object): 39 def f(self): 40 return "abeen&quo ...
- python静态方法和类方法的区别_python中类的静态方法和类的类方法
知识回顾: 上一节中,我们深化学习了类的属性监控,主要使用了三个魔法方法:__getattr__ __setattr__ __delattr__ 与此同时在书写属性设置监控的时候,千万不要忘记写__d ...
- Python的实例方法,类方法,静态方法之间的区别及调用关系
如果只看这个图,很多人可能会看的一头雾水,特别是学过完全面向对象语言的同学, Python 是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个. py 文件,里面没有类,全是 ...
- python 静态方法与类方法
1. 对象方法有self参数,类方法有cls参数,静态方法是不需要这些附加参数的. 2. @staticmethod和@classmethod都是用来定义静态函数的. 相同点: 都不用实例化类,可以直 ...
- python 静态方法 类方法 的作用_Python实例方法、类方法、静态方法的区别与作用详解...
本文实例讲述了Python实例方法.类方法.静态方法的区别与作用.分享给大家供大家参考,具体如下: Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调 ...
- python中实例方法分类_python方法的分类(实例方法、类方法、静态方法)
方法和函数的区分 很多童鞋会比较疑惑,方法和函数有什么区别,都是通过def去定义的啊? 只需要记住一点,方法是用来描述一个目标的行为动作! 不论你是直接通过 类名.方法调用,还是通过由类生成的实例.方 ...
- Python 实例方法,类方法和静态方法的区别
在 Python 中,实例方法(instance method),类方法(class method)与静态方法(static method)经常容易混淆.本文通过代码例子来说明它们的区别. 1.实例方 ...
- python静态变量和静态方法_python的静态成员变量、实例成员变量、静态方法、类方法、实例方法...
标签: 静态成员变量(类变量)和普通成员变量(实例变量) 静态成员变量只能通过类名.变量名获得,实例成员变量,通过该实例引用.变量名获得. 在实例对静态成员变量赋值时,实例 python是动态类型的语 ...
- python静态方法可以被继承吗_python 类的继承 实例方法.静态方法.类方法的代码解析...
这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 dt={} class ...
最新文章
- 【深度学习】面向医学图像的病灶分割调研(三)
- 如何隐藏system函数的窗口
- oracle sequrnce_OracleSql语句学习(五)
- Qt connect信号连接的几种写法
- 输入两个数、用python求他们的和_从键盘上输入俩个实型数,编程求它们的和差积商,要求输出时,保留两位小数C语言编程题:从键盘上输入两个...
- 统计字符串中出现最多的单词和次多的单词
- c均值聚类matlab程序_聚类算法之kmeans算法
- risksystem_环境风险评价系统(RiskSystem)
- Linux系统终端常用指令命令汇总
- Energyplus运行提示缺失.OCX文件的解决方法
- 答题器——游戏工作室的亲密搭档!
- 一个奇鸽船新版本 v1.32
- 【案例】某市规范性文件合法性审核信息管理系统和行政执法监督平台建设案例
- 六成应用不需要程序员,一大批程序员会失业?
- 黑白格子图案与苏格兰裙的关系
- [附源码]Python计算机毕业设计Django的项目管理系统
- androidstudio引用本地maven_android studio 之dependence添加依赖maven仓库中的项目出错
- 等级保护和分级保护有什么不一样?
- openfire4.2 配置fastpath、webchat、spark实现客服系统
- CentOS 7如何连接无线网络