当前位置: 首页 > news >正文

百度收录的网站标题 --专业做公司网站的机构

百度收录的网站标题 --,专业做公司网站的机构,做网站图片如何压缩图片,网站搭建赚钱吗一、普通实例方法(没加 classmethod的情况)假设你的代码原本是这样(普通实例方法):class Jglc_Test_api:def login(self, session, login_data): # 第一个参数是 self# 登录逻辑...passself是什么?​​sel…

一、普通实例方法(没加 @classmethod的情况)

假设你的代码原本是这样(普通实例方法):

class Jglc_Test_api:def login(self, session, login_data):  # 第一个参数是 self# 登录逻辑...pass

self是什么?​

self实例对象本身的引用。调用这个方法时,必须先创建类的实例:

api = Jglc_Test_api()  # 创建实例
api.login(session, data)  # 用实例调用方法
  • 限制​:如果 login不需要依赖“某个具体实例的状态”(比如不需要访问实例属性 self.xxx),只是操作类本身的逻辑​(比如验证登录参数、调用接口),那么创建实例就显得多余。

二、为什么要加 @classmethodcls是什么?

@classmethod是 Python 的装饰器,用来定义类方法。此时方法的第一个参数必须是 cls(全称 "class",但名字可以随便取,习惯用 cls)。

1. 类方法的调用方式:不需要实例,直接用类调用

类方法可以直接通过类名调用,不需要先创建实例:

# 直接用类调用,不用创建 api 实例
Jglc_Test_api.login(session, data)

这对你的登录场景很友好——登录通常是“类级别的操作”(比如验证账号密码是否符合类的规则,或调用接口获取 token),不需要绑定某个具体的实例。

2. cls的作用:指向类本身

cls类对象的引用,通过它可以访问:

  • 类属性(比如 cls.base_url,如果类里有 base_url = "https://xxx");

  • 创建类的新实例(比如 new_api = cls(...))。

举个例子,假设你的类里有个类属性 base_url,类方法可以这样用:

class Jglc_Test_api:base_url = "https://127.0.0.1:8088"  # 类属性(所有实例共享)@classmethoddef login(cls, session, login_data):# 用 cls 访问类属性full_url = f"{cls.base_url}/secu-org/hswealth.sus/account/login/login.json"# 发送登录请求...response = session.post(full_url, json=login_data)return response.json()

这里 cls.base_url直接拿到了类里定义的基础 URL,不需要通过实例访问。

三、类方法 vs 实例方法:什么时候用哪个?

类型

第一个参数

调用方式

适用场景

实例方法

self

必须用实例调用(obj.method()

需要访问/修改实例的状态​(比如 self.name

类方法

cls

可以用类直接调用(Class.method()

操作类本身的逻辑​(比如配置、工具方法)

四、结合你的代码场景:为什么用类方法?

你的 login方法是登录接口的工具方法,它的逻辑可能不需要依赖“某个具体的 Jglc_Test_api实例”——比如:

  • 不需要访问实例的属性(比如 self.token,因为登录后会返回 token,不需要存在实例里);

  • 只需要类的公共配置(比如 base_url);

  • 可以直接通过类调用,更方便(比如测试脚本里直接 Jglc_Test_api.login(...))。

五、延伸:静态方法(@staticmethod)的区别

如果类方法里既不需要 cls也不需要 self,可以用 @staticmethod定义静态方法(纯工具函数):

class Jglc_Test_api:@staticmethoddef validate_login_data(login_data):# 验证登录数据的格式(比如是否有 username/password)if not login_data.get("username") or not login_data.get("password"):raise ValueError("用户名或密码不能为空")return True

静态方法不需要 selfcls,纯粹是类名空间下的工具函数,调用方式和类方法一样:Jglc_Test_api.validate_login_data(data)

总结

  • @classmethod​:定义类方法,不需要实例就能调用;

  • cls​:指向类本身,用来访问类属性或创建实例;

  • 你的代码​:login是类级别的工具方法,不需要实例状态,所以用类方法更方便。

一句话记住​:

实例方法属于“对象”,类方法属于“类”——当逻辑不需要绑定具体对象时,就用类方法!

http://www.dtcms.com/a/560724.html

相关文章:

  • 视频时间戳PTS和DTS的区别
  • 09-神经网络的结构:描述神经网络的层次化组成和设计
  • 【ComfyUI】Stable Audio 文本生成音频
  • 音视频入门核心概念:容器、编码、流与时间戳
  • 网站的域名每年都要续费建个什么网站赚钱
  • 建站之星破解版在下列软件中
  • RocketMQ之长轮训机制
  • 论文阅读-EfficientAD
  • 跟der包学习java_day6「面向对象编程(OOP)」
  • 好的企业管理网站深圳市中心
  • 阿克苏建设局网站wordpress app
  • 使用 Ksycopg2 驱动实现 Kingbase 数据库增删改查系统
  • released信号,windowIcon/setWindowIcon(QIcon),qrc机制
  • 等价多米诺骨牌对的数量(C语言)
  • Python pandas数据透视表(pivot_table)详解:从入门到实战,多维数据分析利器
  • 江西新余网站建设网站建设页面设计规格
  • ATPrompt:基于属性的视觉提示
  • 手机如何制作网站教程网站双线选择
  • upload文件上传漏洞浅析
  • GitHub 热榜项目 - 日榜(2025-11-02)
  • 网站稿件管理发布系统中山网站建设半江红
  • 【Qt开发】布局管理器(二)-> QHBoxLayout水平布局
  • Linux 6.17:最新的驱动程序、快速的网络和可靠的内存
  • 【Ubuntu】虚拟机 Ubuntu 挂载 宿主机 Windows文件夹
  • 将go-tcp项目部署到docker容器下运行
  • 华为OD机试双机位A卷 - 几何平均值最大的子数组 (C++ Python JAVA JS GO)
  • PostgreSQL死锁排查攻略:从日志分析到实时监控
  • 佛山响应式网站开发二级域名免费分发站
  • 【软考架构】案例分析-Web应用设计(应用服务器概念)
  • C++中的过滤器模式:原理、实现与应用