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
由上述代码可以看出【实例属性需要通过对象来访问】【类属性通过类访问】,在使用上可以看出实例属性和类属性的归属是不同的。
其在内容的存储方式类似如下图:
由上图看出:
类属性在内存中只保存一份
实例属性在每个对象中都要保存一份
应用场景:
通过类创建实例对象时,如果每个对象需要具有相同名字的属性,那么就使用类属性,用一份既可
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程序设计有所帮助。
来源:https://blog.csdn.net/kai46385076/article/details/100128110
标签:Python,静态方法,类方法
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
基于信息排序的信息理解
2008-05-16 10:37:00
![](https://img.aspxhome.com/file/UploadPic/20085/16/2008516103959993s.gif)
对python中的six.moves模块的下载函数urlretrieve详解
2023-10-20 00:23:45
![](https://img.aspxhome.com/file/2023/6/108146_0s.jpg)
php支持中文字符串分割的函数
2023-11-18 21:42:04
Python Mock模块原理及使用方法详解
2023-03-31 14:13:56
Python实现TOPSIS分析法的示例代码
2021-05-09 19:32:47
![](https://img.aspxhome.com/file/2023/1/109621_0s.png)
Oracle数据库的实例/表空间/用户/表之间关系简单讲解
2023-07-20 11:48:34
![](https://img.aspxhome.com/file/2023/4/64474_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/9/69159_0s.png)
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
![](https://img.aspxhome.com/file/2023/5/72065_0s.jpg)
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2023-09-06 22:11:25
![](https://img.aspxhome.com/file/2023/4/109584_0s.png)
用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
![](https://img.aspxhome.com/file/2023/8/99308_0s.png)
php输出文字乱码的解决方法
2023-11-11 07:40:08