Python 类的方法和静态方法
2023-09-11 14:16:46 时间
1、类方法
类属性 就是针对 类对象 定义的属性
使用 赋值语句 在 class 关键字下方可以定义 类属性;
类属性 用于记录 与这个类相关 的特征;
类方法就是针对 类对象 定义的方法
在 类方法 内部可以治具访问 类属性 后置调用其他的 类方法;
语法如下:
@classmethod
def 类方法名(cls)
pass
类方法需要用 编辑器 @classmethod 来标识,告诉编辑器这是一个类方法;
类方法的 第一个参数 应该是cls
由 哪一个类 调用的方法,方法内的 cls 就是 哪一个类的引用;
这个参数和 实例方法 的第一个参数是 self 类似;
提示 使用其他名称也可以,不过习惯使用cls;
通过 类名, 调用 类方法时,不需要传递 cls 参数;
在方法内部:
可以通过 cls ,访问类的属性;
也可以通过 cls,调用其他的类方法;
示例需求:
定义一个工具类;
每件工具都有自己的 name
需求 – 在 类 封装一个 show_tool_count 类的方法,输出术语当前这个类,创建的对象个数;
在类方法内部,可以直接使用 cls 访问 类属性 或者 调用类方法;
class Tool(object):
# 使用赋值语句定义类属性,记录所有工具对象的数量
count = 0
@classmethod
def show_tool_count(cls):
print("工具对象的数量 %d" %cls.count)
def __init__(self,name):
self.name = name
# 让类顺序的值 +1
Tool.count += 1
# 创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
# 调用类方法
Tool.show_tool_count()
2、静态方法
在开发时,如果需要在 类 中封装一个方法,这个方法:
即 不需要 访问 实例属性 或者调用 实例方法;
也 不需要 访问 类属性 或者调用 类方法;
这个时候,可以把这个方法封装成一个静态方法;
语法如下:
@staticmethod
def 静态方法名()
pass
静态方法 需要用 编辑器 @staticmethod 来标识,告诉编辑器这是一个静态方法;
通过 类名,调用 静态方法;
class Dog(object):
@staticmethod
def run():
# 不访问实例属性和方法
print("小狗要跑...")
# 通过类名,调用静态方法 不需要创建对象
Dog.run()
相关文章
- python设计模式之迭代器与生成器详解(五)
- python安装python-lzf包,报错lzf_module.c:3:20: fatal error: Python.h: No such file or directory
- Python学习-将list列表写入文件并读取方法汇总
- Python 安装第三方库,超时报错--Read timed out 的两种解决方法(pip)
- Python 网络请求模块 urllib 、requests
- 学Python要先学什么?Python入门方法
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- 学习Python的第十一节课(构造函数和析构函数、静态方法和类方法)
- 【python】+704个常用工具Python库
- Python shuffle() 函数
- (数据科学学习手札09)系统聚类算法Python与R的比较
- Python实现下载文件的三种方法
- python爬虫入门(五)Selenium模拟用户操作
- python爬虫入门(四)利用多线程爬虫
- python爬虫入门(三)XPATH和BeautifulSoup4
- python之类的继承
- Python 常见问题 之 python 安装包下载安装速度慢 的 快速解决方法(之一)
- python:封装连接数据库方法
- VScode Python no module的解决方法
- 【python百度智能云】:Python — 三种获取__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION方法。
- Python学习-将list列表写入文件并读取方法汇总
- AttributeError: module 'torch._C' has no attribute '_cuda_setDevice'(在python命令后面加上 --gpu_ids -1)
- python中os模块的常用方法