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实现数通设备端口监控示例
Apr 02 Python
Python实现的下载8000首儿歌的代码分享
Nov 21 Python
Python解析json文件相关知识学习
Mar 01 Python
Python正则表达式使用经典实例
Jun 21 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
使用turtle绘制五角星、分形树
Oct 06 Python
pytorch之添加BN的实现
Jan 06 Python
基于python爬取有道翻译过程图解
Mar 31 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
详解pytorch创建tensor函数
Mar 22 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
golang与PHP输出excel示例
2016/07/22 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
DOM事件探秘篇
2017/02/15 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
python检测远程端口是否打开的方法
2015/03/14 Python
简单介绍Python中的JSON模块
2015/04/08 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
一年级家长会邀请函
2014/01/25 职场文书
合作经营协议书范本
2014/04/17 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
整改落实自查报告
2014/11/05 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android