0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python静态方法与类方法

python爬虫知识分享 来源:python爬虫知识分享 作者:python爬虫知识分享 2022-03-07 16:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

python静态方法与类方法

1. 写法上的差异

类的方法可以分为:

静态方法:有 staticmethod 装饰的函数

类方法:有 classmethod 装饰的函数

实例方法:没有任何装饰器的普通函数

举个例子,如下这段代码中,run 普通的实例方法,eat 是静态方法,jump 是类方法。

class Animal:
    def __init__(self, name):
        self.name = name

    def run(self):
        print(f"{self.name}跑起来啦")

    @staticmethod
    def eat():
        print("正在吃饭...")

    @classmethod
    def jump(cls, name):
        print(f"{name}跳起来啦")

这三种方法,在写法有很大的区别:

1、普通的实例方法,在定义时,他的第一个方法固定是 self,如果是从实例调用,那么 self 参数 不需要传入,如果是通过类调用,那么 self 要传入已经实例化的对象。

>>> dog=Animal(name="小黑")
>>> dog.run()
小黑跑起来啦
>>> Animal.run(dog)
小黑跑起来啦

2、静态方法,在定义时,不需要 self 参数。

>>> dog=Animal(name="小黑")
>>> dog.eat()
正在吃饭...
>>> Animal.eat()
正在吃饭...

3、类方法,在定义时,第一个参数固定是 cls,为 class 的简写,代表类本身。不管是通过实例还是类调用类方法,都不需要传入 cls 的参数。

>>> dog=Animal(name="小黑")
>>> dog.jump("小黑")
小黑跳起来啦
>>> Animal.jump("小黑")
小黑跳起来啦

2. 方法与函数区别

在前面,我们很经常提到方法和函数,为免有同学将他们混为一谈,我这里总结一下他们的区别。

在 Python 3.x 中,

普通函数(未定位在类里)和静态方法,都是函数(function )。

实例方法(@staticmethod)和类方法,都是方法(method )。

这些结论其实都可以使用 type 函数得到验证。

先准备如下代码

class Animal:
    def __init__(self, name):
        self.name = name

    def run(self):
        print(f"{self.name}跑起来啦")

    @staticmethod
    def eat():
        print("正在吃饭...")

    @classmethod
    def jump(cls, name):
        print(f"{name}跳起来啦")

def demo_func():
    pass

然后进入 Python Console 模式

>>> type(demo_func)  # 普通函数

>>> type(dog.eat)   # 静态方法

>>>
>>> type(dog.run)  # 实例方法

>>> type(dog.jump)  # 类方法

方法是一种和对象(实例或者类)绑定后的特殊函数。

方法本质上还是函数,不同之处在于它与对象进行绑定。

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 面向对象
    +关注

    关注

    0

    文章

    64

    浏览量

    10220
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89592
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    单片机系统硬件的调试方法

    单片机的系统硬件调试,通常有静态调试和动态调试两种不同,前者是通过目测、万能表测试、加电检查、联机检查的方法,在加电于样机之前.对样机的型号规格,以及安装要求等进行核对,同时检查 电源 系统.防止
    发表于 12-03 06:10

    求助,静态电流测试,稳态测试怎么做

    我是一名刚入职的实习生,我的嵌入式这一块的知识很欠缺,但是交给我的任务就是做一块DEMO板的静态电流测试和稳态测试,我目前有的工具如图所示,请求各位大佬教给我具体方法(最好是能有操作步骤)和思路,多谢各位了
    发表于 11-12 15:46

    Python调用API教程

    两个不同系统之间的信息交互。在这篇文章中,我们将详细介绍Python调用API的方法和技巧。 一、用Requests库发送HTTP请求 使用Python调用API的第一步是发送HTTP请求,通常
    的头像 发表于 11-03 09:15 330次阅读

    开关电源测试流程方法合集

    的标准解决方案,因此本文针对开关电源电性能的测试流程和方法进行总结。 本文主要介绍开关电源的基础测试项目流程和方法,其中温度、湿度以及电磁测试等特殊测试不在本文范围之内。 电源模块 测试仪器: 交流稳压电源:提供
    的头像 发表于 10-31 09:36 791次阅读
    开关电源测试流程<b class='flag-5'>方法</b>合集

    谐波源定位常用的方法有哪些?

    谐波源定位的核心是通过 “信号测量→特征分析→逻辑判断”,确定电网中产生谐波的具体设备、用户或区域,常用方法可按 “原理差异” 分为功率流向、暂态对比、阻抗分析、相位判断
    的头像 发表于 10-13 16:41 485次阅读

    动态调整同步周期的具体方法是什么?

    资源浪费” 之间找到动态平衡。其具体方法可分为四大,每类均包含 “状态感知 - 阈值判断 - 周期调整 - 反馈验证” 的闭环逻辑,以下为详细说明: 一、基于 “同步误差反馈” 的动态调整(核心基础方法) 该
    的头像 发表于 09-19 11:31 427次阅读

    边聊安全 | 软件单元测试的设计方法

    的设计是确保代码正确性和可靠性的关键步骤。在软件单元测试中,等价测试是一种很重要的测试设计方法,它通过将输入数据划分为若干个等价,并从每个等价中选取代表性的数
    的头像 发表于 09-05 16:18 4394次阅读
    边聊安全 | 软件单元测试的设计<b class='flag-5'>方法</b>

    Python中字符串逆序有几种方式,代码是什么

    对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,今天总结了一下python中对于字符串的逆序输出的几种常用
    的头像 发表于 08-28 14:44 785次阅读

    浅谈半导体薄膜制备方法

    本文简单介绍一下半导体镀膜的相关知识,基础的薄膜制备方法包含热蒸发和溅射法两
    的头像 发表于 06-26 14:03 1237次阅读
    浅谈半导体薄膜制备<b class='flag-5'>方法</b>

    详解ADC电路的静态仿真和动态仿真

    ADC电路主要存在静态仿真和动态仿真两仿真,针对两种不同的仿真,我们存在不同的输入信号和不同的数据采样,因此静态仿真和动态仿真是完全不同的两个概念,所以设置的参数不同。
    的头像 发表于 06-05 10:19 1533次阅读
    详解ADC电路的<b class='flag-5'>静态</b>仿真和动态仿真

    数字IC设计:方法、技巧与实践

    方法,以及和综合关系密切的静态时间分析和一致性检查技术。最后一章介绍了芯片设计的项目管理。 获取完整文档资料可下载附件哦!!!!如果内容有帮助可以关注、点赞、评论支持一下哦~
    发表于 05-28 16:06

    参考cycx3_uvc_ov5640例程,想进行按键触发拍照,使用方法一,请问怎么实现的?

    [] = #ifdef STILL_CAPTURE_ENABLE 0x02, /* 支持方法 2 静态图像捕获方法 *//ZHN 02-&gt;01 不能改 1 改完 USB 出错,蓝屏
    发表于 05-21 07:24

    python入门圣经-高清电子书(建议下载)

    和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、、文件与异常、代码测试等内容; 第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D 游戏开发如何利用数据
    发表于 04-10 16:53

    伺服故障代码有哪些?哪些处理方法

    伺服故障代码有哪些?哪些处理方法?以三菱伺服驱动器为例,下面为故障代码分类及处理方法如下: 一、电源及连接故障       1. AL.E6/ALE6.1 - 伺服紧急停止       故障现象
    的头像 发表于 02-06 14:06 1.4w次阅读
    伺服故障代码有哪些?哪些处理<b class='flag-5'>方法</b>?

    字符串处理方法 字符串转数字的实现

    在编程中,将字符串转换为数字是一个常见的需求。不同的编程语言有不同的方法来实现这一功能。以下是一些常见编程语言中的字符串转数字的实现方法PythonPython中,可以使用内置
    的头像 发表于 01-07 15:26 1406次阅读