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计算回文数的方法
Mar 11 Python
python获取当前计算机cpu数量的方法
Apr 18 Python
Python利用递归和walk()遍历目录文件的方法示例
Jul 14 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
解决pycharm中的run和debug失效无法点击运行
Jun 09 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 Python
详解Python 中的容器 collections
Aug 17 Python
Python如何将模块打包并发布
Aug 30 Python
Python在线和离线安装第三方库的方法
Oct 31 Python
Python图像识别+KNN求解数独的实现
Nov 13 Python
Python中zipfile压缩包模块的使用
May 14 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就可用
2010/10/12 PHP
openPNE常用方法分享
2011/11/29 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
JavaScript中的Window窗口对象
2008/01/16 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
js实现移动端轮播图滑动切换
2020/12/21 Javascript
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
python去掉空白行的多种实现代码
2018/03/19 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
Python代码需要缩进吗
2020/07/01 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
销售行政专员职责
2014/01/03 职场文书
三下乡活动方案
2014/01/31 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
防灾减灾标语
2014/10/07 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏