Python基础篇(16):类方法、实例方法和静态方法(Python类中方法的三种形式)

news/2024/11/28 7:44:59/

一、类方法

1、类方法的定义

  • 使用 @classmethod 进行修饰
  • 方法中第一个形参是cls
class People:@classmethoddef func_name(cls, params):pass

2、类方法的调用

  • “类名.方法名”
  • “对象.方法名”
class Student:@classmethoddef s_info(cls):print("call Student classmethod")Student.s_info()  # 使用“类名.方法名”的方法来调用stu = Student()
stu.s_info()    # 使用“对象.方法名” 的方法来调用

二、实例方法

1、实例方法的定义

  • 中定义的 方法 默认都是实例方法
  • 第一个形参是self,不需要使用任何的修饰符修饰

2、实例方法的调用

  • 第一种是通过 “对象.方法名” 的方法来调用
  • 第二种是通过 “类名.方法名(对象, 参数列表)” 的形式来调用
class Student:def s_info(self):print("call Student instancemethod")stu = Student()stu.s_info()    # 通过 “对象.方法名” 的方法来调用
Student.s_info(stu)  # 类名.方法名(对象, 参数列表)” 的形式来调用

三、类方法和实例方法区别

  1. 类方法第一个形参是cls,实例方法第一个形参是self
  2. 类方法调用不需要创建对象,实例方法调用必须要创建对象

四、静态方法

1、静态方法的定义

  • 静态方法的需要使用 @staticmethod 来修饰
  • 静态方法的 参数 没有任何的限制,可以没有任何参数,第一个参数也不必像 类方法实例方法 那样
class Student:@staticmethoddef func_name(params):pass

2、静态方法的调用

  • “类名.方法名”
  • “对象.方法名”
class Student:@staticmethoddef s_info():print("call Student staticmethod")Student.s_info()  # “类名.方法名” 的方法来调用stu = Student()
stu.s_info()   # “对象.方法名” 的方法来调用

3、静态方法的使用场景

  • 既不需要访问实例属性或者实例方法
  • 也不需要访问类属性或类方法

http://www.ppmy.cn/news/1077432.html

相关文章

vue常见问题汇总

来源:https://www.fly63.com/ Q1:安装超时(install timeout) 方案有这么些: cnpm : 国内对npm的镜像版本/*cnpm website: https://npm.taobao.org/*/npm install -g cnpm --registryhttps://registry.npm.taobao.org// cnpm 的大多命令跟 npm 的是一致的…

Nginx详解 第四部分:Nginx重写功能(附详细配置实例)

Part 4 1.简介2.if指令(单分支)2.1 基本原理2.2 基本语法2.3 举个例子 3.return指令3.1 定义和作用3.2 基本语法3.3 举个例子 4.set指令5.break指令5.1 基本原理5.2 举个例子 6.rewrite指令6.1 基本原理6.2 基本语法6.3 举个例子6.3.1 重写URL路径:目录重…

【UE 材质】模型部分透明

材质节点如下,这里简单解释一下。首先通过“Mask”节点将"Texture Coordinate" 节点中的“G”通道分离出来,然后通过“if”节点进行判断,当值小于0.5时为透明,当颜色不小于5时为不透明。可以通过一个参数来控制模型透明…

MyBaits Generator

参考文档 MyBatis Generator Core – Introduction to MyBatis Generator MyBatis Generator 详解_enablesubpackages_isea533的博客-CSDN博客 一文解析 MyBatis Generator 的使用及配置 - 掘金 1. Introduction MyBatis Generator (MBG) 是 MyBatis MyBatis的代码生成器。…

vscode搭建springboot开发环境

前言 idea好用到但是收money,eclipse免费但是界面有点丑,所以尝试使用vscode开发springboot 提前准备 安装jdk,jdk需要大于11 安装vscode 安装maven 安装插件 主要是下面的插件 Extension Pack for JavaSpring Boot Extension PackDepe…

MySQL 间隙锁原理深度详解:解密并掌握幻读问题的终极武器

推荐阅读 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 史上最全文档AI绘画stablediffusion资料分享 AI绘画关于SD,MJ,GPT,SDXL百科全书 AI绘画 stable…

UG NX二次开发(C++)-CAM-刀轨循环设置多个加工余量并输出clsf文件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、问题说明2.1 创建一个平面端铣的加工程序2.2 生成余量为0的刀位文件3、采用UG NX二次开发循环变余量程序3.1 头文件3.2 在类中声明方法3.3 添加方法代码3.4 测试结果1、前言 在UG NX的C…

能直接运营的发接任务平台小程序搭建开发演示

有个项目估计做过互联网的小伙伴都听说过——发接任务平台。 基本每年都有发接任务平台关站,但又有新的平台出来,往复循环,无比热闹。这在互联网圈不常见,互联网项目很多都是风头过去了就结束了,但发接任务年年似乎都…