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

    浏览量

    9923
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83476
收藏 人收藏

    评论

    相关推荐

    常用的变频器检测方法静态测试和动态测试

    常用的变频器检测方法静态测试和动态测试  变频器是一种电力调节装置,可以实现对电动机的调速和节能。在使用变频器时,经常需要对其进行检测,以确保其正常工作。常用的变频器检测方法主要包括静态
    的头像 发表于 02-01 15:47 1058次阅读

    查看python安装路径的方法

    如何查看Python安装路径,以及各个操作系统下的细节和注意事项。 一、Windows操作系统下查看Python安装路径的方法 对于Windows操作系统,有多种方法可以查看
    的头像 发表于 11-29 14:54 1030次阅读

    运行Python程序的几种常见方法

    Python是一种高级编程语言,具有简单易学,易于阅读和调试的特点。当你完成了一个Python程序之后,你需要运行它以检查程序是否按照预期工作。下面是运行Python程序的几种常见方法
    的头像 发表于 11-28 15:32 472次阅读

    python调用math函数的方法

    中。本文将详细介绍math模块中的各种数学函数的调用方法,包括函数的功能、参数的使用和返回值的含义等方面,以帮助读者更好地理解和应用这些函数。 一、导入math模块 要使用math模块中的函数,首先需要将其导入到Python程序中。可以使用import语句将
    的头像 发表于 11-22 11:01 1273次阅读

    python处理重复值的方法

    处理重复值是数据处理中常见的任务之一。在Python中,有几种有效的方法可以处理重复值,包括使用集合、字典和pandas库等。 使用集合 集合数据结构是Python中用于存储唯一元素的一种
    的头像 发表于 11-21 15:47 573次阅读

    python的insert方法

    insert()方法Python中的列表对象提供的一个方法,用于在指定位置插入一个元素。该方法的语法如下: list. insert ( index , obj) 其中,index表
    的头像 发表于 11-21 14:27 638次阅读

    linux修改静态ip地址方法

    在Linux系统中修改静态IP地址可以通过多种方式实现。在本文中,我们将介绍两种常见的方法:命令行方式和配置文件方式。无论你是初学者还是有经验的Linux用户,本文都将向你展示如何使用这两种方法
    的头像 发表于 11-17 10:36 1925次阅读

    Python中普通方法静态方法、类方法的区别

    ,由于 Python 语言的灵活性,这部分内容在日常编码过程中,很容易被忽略掉 本篇文章将和大家一起聊聊这几个小知识点 2.@staticmethod 装饰器 @staticmethod 修饰的方法称为
    的头像 发表于 11-02 11:03 249次阅读

    为什么Main方法里可以调用println()方法 ?

    public static void main(String[] args) {System.out.println(\"xxxxxxxxxx\"); } } 我记得静态方法里不能调用非静态
    发表于 10-25 07:02

    CompletableFuture的静态方法使用

    1 CompletableFuture的静态方法使用 CompleteableFuture的静态方法有如下 之前的文章里面已经讲过suuplyAsync,以及runAsync。我们就直
    的头像 发表于 10-10 14:07 358次阅读
    CompletableFuture的<b class='flag-5'>静态</b><b class='flag-5'>方法</b>使用

    动态库封装成python模块的方法

    之前的文章 将静态库封装成 python 模块中讲解了如何将静态库封装成 python 模块,静态库封装相对来说还是有点复杂,今天来介绍下动
    发表于 07-13 15:24 383次阅读

    静态库封装成python模块的方法

    很多硬件厂商的底层设备驱动都是以库的形式提供给开发者,有的是动态库,有的是静态库。开发上层应用,最快速便捷的方式当然还是用 python,对于动态库,可以用 python 的 ctypes 库进行加载,而对于
    发表于 07-13 15:24 309次阅读

    数码管的静态、动态显示原理及编程方法(2)

    “掌握数码管的静态、动态显示原理及编程方法。--综合案例”
    的头像 发表于 06-28 11:41 1010次阅读
    数码管的<b class='flag-5'>静态</b>、动态显示原理及编程<b class='flag-5'>方法</b>(2)

    数码管的静态、动态显示原理及编程方法(1)

    “掌握数码管的静态、动态显示原理及编程方法。--不是综合案例”
    的头像 发表于 06-28 11:40 973次阅读
    数码管的<b class='flag-5'>静态</b>、动态显示原理及编程<b class='flag-5'>方法</b>(1)

    Python中检查字符串包含的方法

    Python 有多种处理字符串的方法。今天我们介绍如何检查一个字符串中是否包含另一个字符串。
    的头像 发表于 05-14 16:02 1.4w次阅读