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

作者:小飞侠v科比 时间:2021-07-08 19:25:37 

本文实例讲述了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程序设计有所帮助。

来源:https://blog.csdn.net/kai46385076/article/details/100128110

标签:Python,静态方法,类方法
0
投稿

猜你喜欢

  • 基于信息排序的信息理解

    2008-05-16 10:37:00
  • 对python中的six.moves模块的下载函数urlretrieve详解

    2023-10-20 00:23:45
  • php支持中文字符串分割的函数

    2023-11-18 21:42:04
  • Python Mock模块原理及使用方法详解

    2023-03-31 14:13:56
  • Python实现TOPSIS分析法的示例代码

    2021-05-09 19:32:47
  • Oracle数据库的实例/表空间/用户/表之间关系简单讲解

    2023-07-20 11:48:34
  • ASP 读取MP3文件帧的信息比特率,采样频率,播放时间

    2010-06-04 12:22:00
  • Python轻松管理与操作文件的技巧分享

    2021-11-19 14:42:12
  • 百分百弹窗

    2013-08-07 07:41:06
  • MySQL启动连接的命令以及与PHP程序连接的基本语法

    2023-11-14 22:27:26
  • SQLServer WITH 的用法

    2009-07-09 18:54:00
  • SQL Server性能的改进得益于逻辑数据库设计

    2009-10-23 13:55:00
  • WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法

    2023-07-01 11:01:00
  • 安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法

    2023-09-06 22:11:25
  • 用Python批量把文件复制到另一个文件夹的实现方法

    2021-03-10 14:53:11
  • python 实现学生信息管理系统的示例

    2021-05-01 01:37:24
  • 使用symfony命令创建项目的方法

    2023-11-15 10:07:45
  • 从trim原型函数看js正则表达式的性能

    2008-12-11 13:55:00
  • 如何基于python实现脚本加密

    2021-10-07 19:23:05
  • php输出文字乱码的解决方法

    2023-11-11 07:40:08
  • asp之家 网络编程 m.aspxhome.com