Python 静态方法和类方法实例分析


Posted in Python onNovember 21, 2019

本文实例讲述了Python 静态方法和类方法。分享给大家供大家参考,具体如下:

1. 类属性、实例属性

它们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,

实例属性属于对象

类属性属于类

class Province(object):
  # 类属性
  country = '中国'
  def __init__(self, name):
    # 实例属性
    self.name = name
# 创建一个实例对象
obj = Province('山东省')
# 直接访问实例属性
print(obj.name)
# 直接访问类属性
Province.country

由上述代码可以看出【实例属性需要通过对象来访问】【类属性通过类访问】,在使用上可以看出实例属性和类属性的归属是不同的。

其在内容的存储方式类似如下图:

Python 静态方法和类方法实例分析

由上图看出:

类属性在内存中只保存一份

实例属性在每个对象中都要保存一份

应用场景:

通过类创建实例对象时,如果每个对象需要具有相同名字的属性,那么就使用类属性,用一份既可

2. 实例方法、静态方法和类方法

方法包括:实例方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。

实例方法:由对象调用;至少一个self参数;执行实例方法时,自动将调用该方法的对象赋值给self;

类方法:由类调用; 至少一个cls参数;执行类方法时,自动将调用该方法的类赋值给cls;

静态方法:由类调用;无默认参数;

class Foo(object):
  def __init__(self, name):
    self.name = name
  def ord_func(self):
    """ 定义实例方法,至少有一个self参数 """
    # print(self.name)
    print('实例方法')
  @classmethod
  def class_func(cls):
    """ 定义类方法,至少有一个cls参数 """
    print('类方法')
  @staticmethod
  def static_func():
    """ 定义静态方法 ,无默认参数"""
    print('静态方法')
f = Foo("中国")
# 调用实例方法
f.ord_func()
# 调用类方法
Foo.class_func()
# 调用静态方法
Foo.static_func()

Python 静态方法和类方法实例分析

对比

相同点:对于所有的方法而言,均属于类,所以 在内存中也只保存一份

不同点:方法调用者不同、调用方法时自动传入的参数不同。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python重试装饰器示例
Feb 11 Python
Python标准库之循环器(itertools)介绍
Nov 25 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
在Django框架中编写Contact表单的教程
Jul 17 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
Python利用pandas处理Excel数据的应用详解
Jun 18 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 Python
Python3爬虫mitmproxy的安装步骤
Jul 29 Python
python中random.randint和random.randrange的区别详解
Sep 20 Python
TensorFlow的自动求导原理分析
May 26 Python
Python用tkinter实现自定义记事本的方法详解
Mar 31 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 #Python
python 实现兔子生兔子示例
Nov 21 #Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 #Python
用python中的matplotlib绘制方程图像代码
Nov 21 #Python
python hash每次调用结果不同的原因
Nov 21 #Python
python/Matplotlib绘制复变函数图像教程
Nov 21 #Python
Python 复平面绘图实例
Nov 21 #Python
You might like
解析thinkphp中的导入文件标签
2013/06/20 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
用javascript作一个通用向导说明
2011/08/30 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
JavaScript事件 "事件对象"的注意要点
2016/01/14 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
详解angular2 控制视图的封装模式
2018/12/27 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
python 自动批量打开网页的示例
2019/02/21 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
python初步实现word2vec操作
2020/06/09 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
python opencv实现图像配准与比较
2021/02/09 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
美国知名艺术画网站:Art.com
2017/02/09 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
蜜蜂引路教学反思
2014/02/04 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
银行求职信范文怎么写
2015/03/20 职场文书