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访问MySQL封装的常用类实例
Nov 11 Python
Python判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
Android分包MultiDex策略详解
Oct 30 Python
python中实现精确的浮点数运算详解
Nov 02 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 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
php操作mongoDB实例分析
2014/12/29 PHP
php数组键值用法实例分析
2015/02/27 PHP
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
JS实现页面打印功能
2017/03/16 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
python将ip地址转换成整数的方法
2015/03/17 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
Python的互斥锁与信号量详解
2019/09/12 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
我未来的职业规划范文
2014/01/11 职场文书
绩效工资分配方案
2014/01/18 职场文书
优秀士兵个人事迹材料
2014/01/19 职场文书
高等教育学自荐书范文
2014/02/10 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
春节慰问信范文
2015/02/15 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS