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虚拟环境virualenv的安装与使用
Dec 18 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
python求质数的3种方法
Sep 28 Python
Python实现的特征提取操作示例
Dec 03 Python
python实现简单多人聊天室
Dec 11 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
使用Python实现牛顿法求极值
Feb 10 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 Python
python飞机大战游戏实例讲解
Dec 04 Python
python基于tkinter制作无损音乐下载工具
Mar 29 Python
使用Python开发冰球小游戏
Apr 30 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进行MySQL删除记录操作代码
2008/06/07 PHP
php 时间计算问题小结
2009/01/04 PHP
php adodb介绍
2009/03/19 PHP
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP中用hash实现的数组
2011/07/17 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
php购物车实现方法
2015/01/03 PHP
js DOM 元素ID就是全局变量
2012/09/20 Javascript
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
2014/06/25 Python
Python CSV模块使用实例
2015/04/09 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
爱牙日活动总结
2014/08/29 职场文书
销售经理岗位职责
2015/01/31 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
党员发展大会主持词
2015/07/03 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫