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

【Python】函数(function)和方法(method)的区别

这里先说结论,为了满足心急的小伙伴:methodfunction的最大区别就是参数有无进行绑定


自定义类Test:

首先先来一个自定义类:

class Test:def Func_normal(arg):print('Func_normal:',arg)@staticmethoddef Func_static(arg):print('Func_static:',arg)@classmethoddef Func_class(arg):print('Func_class:',arg)


代码样例:

先来一份代码以及运行结果:

obj=Test()#Test为本文开头提到的自定义类
for item in ['Test','obj']:print('\n'+('class'if item=='Test' else 'object'))for name in ['normal','static','class']:print(f'[{name}]',eval(f'{item}.Func_{name}'))

运行结果-1

为了更直观地看出差别,这里简单的编写一个表格:

属性访问[normal][@staticmethod][@classmethod]
classfunctionfunctionmethod-class
objectmethod-objectfunctionmethod-class

可以看出通过类和通过对象访问到的是不完全一致的,而这与本主题有关。
但是仅仅通过这个还不够直观地表现出它们的差异性,这里再附加一份测试代码以及运行结果:

obj=Test()#Test为本文开头提到的自定义类
for item in ['Test','obj']:for name in ['normal','static','class']:try:tx=f'{item}.Func_{name}()'print('>>>',tx)exec(tx)except Exception as e:print(e)print()

运行结果-2

这里同样贴心地将上面的结果整理成表格便于对比:

不传参数[normal][@staticmethod][@classmethod]
class<错误:缺失1参><错误:缺失1参>class
objectobject<错误:缺失1参>class


分析:

在上面的代码样例中得到两张表格,这里再重新把俩表格放在一起以便进行对比,请仔细比对俩表格之间的差异。

属性访问[normal][@staticmethod][@classmethod]
classfunctionfunctionmethod-class
objectmethod-objectfunctionmethod-class
不传参数[normal][@staticmethod][@classmethod]
class<错误:缺失1参><错误:缺失1参>class
objectobject<错误:缺失1参>class

以下为结论:

  • methodfunction的最大区别就是参数有无进行绑定。
  • 在本例中,method在调用时不需要参数,因为第一个参数已经与特定对象进行了绑定,而function需要传入1参数才能正常调用。
  • @classmethod的作用是将函数的第一个参数绑定为本类(无论是通过类还是类对象进行调用),@staticmethod的作用则是撤去第一个参数的绑定。


完整代码:

class Test:def Func_normal(arg):print('Func_normal:',arg)@staticmethoddef Func_static(arg):print('Func_static:',arg)@classmethoddef Func_class(arg):print('Func_class:',arg)obj=Test()
for item in ['Test','obj']:print('\n'+('class'if item=='Test' else 'object'))for name in ['normal','static','class']:print(f'[{name}]',eval(f'{item}.Func_{name}'))print('\n\n'+'——'*30+'\n\n')obj=Test()
for item in ['Test','obj']:for name in ['normal','static','class']:try:tx=f'{item}.Func_{name}()'print('>>>',tx)exec(tx)except Exception as e:print(e)print()

本文发布于CSDN,未经本人同意不得私自转载:https://blog.csdn.net/weixin_44733774/article/details/133509177

相关文章:

【Python】函数(function)和方法(method)的区别

这里先说结论&#xff0c;为了满足心急的小伙伴&#xff1a;method与function的最大区别就是参数有无进行绑定。 自定义类Test&#xff1a; 首先先来一个自定义类&#xff1a; class Test:def Func_normal(arg):print(Func_normal:,arg)staticmethoddef Func_static(arg):pri…...

linux入门---信号的理解

目录标题 如何理解计算机中的信号如何查看计算机中的信号初步了解信号的保存和发送如何向目标进程发送信号情景一&#xff1a;使用键盘发送信号情景二&#xff1a;系统调用发送信号情景三&#xff1a;硬件异常产生信号情景四&#xff1a;软件条件产生信号 核心转储信号的两个问…...

nn.Linear(d, num_units, bias=True)设置bias和不设置bias有什么区别?

nn.Linear(d, num_units, biasTrue)是PyTorch中定义的一个全连接线性层。其中&#xff0c;d是输入特征的数量&#xff0c;num_units是输出特征的数量&#xff0c;而bias参数决定是否在这个线性变换中添加一个偏置项。 设置biasTrue与biasFalse的区别如下&#xff1a; 数学表示…...

代码随想录 Day10 栈与队列 LeetCode T239 滑动窗口的最大值 T347 前K个高频元素

简要介绍一下单调队列和优先级队列的不同 元素顺序的处理&#xff1a;单调队列中&#xff0c;元素的顺序是单调的&#xff0c;也就是说&#xff0c;队列中的元素按照特定的单调性&#xff08;递增或递减&#xff09;排列。这种特性使得单调队列在处理一些问题时非常高效&#…...

vue/自定义指令

需求&#xff1a; 页面有个input元素&#xff0c;现在要鼠标光标聚焦在上面&#xff0c;让每个页面上的标签都可以聚焦光标&#xff0c;比如&#xff0c;从A页面跳转到B页面的时候&#xff0c;我们依然要聚焦。如果要一遍遍地操作dom就会很麻烦。 这个时候&#xff0c;为了方便…...

借用binlog2sql工具轻松解析MySQL的binlog文件,再现Oracle的闪回功能

借用binlog2sql工具轻松解析MySQL的binlog文件 简介依赖配置用户权限选项配置案例&#xff1a;误UPDATE表数据回滚binlog2sql VS mysqlbinlog 看腻文章了就来听听视频演示吧&#xff1a;https://www.bilibili.com/video/BV1Zj411k7VW/ 简介 binlog2sql是美团大众点评开源的一…...

一次解决Pytorch训练时损失和参数出现Nan或者inf的经历

目前在做实验&#xff0c;参考了一个新的网络架构之后发现训练时损失出现Nan&#xff0c;参数了出现了inf的情况&#xff0c;先说说我的排查经历。 首先肯定是打印损失&#xff0c;损失是最容易出现Nan的&#xff0c;有各种原因&#xff0c;网上也有很多解决办法&#xff0c;我…...

【python入门篇】列表简介及操作(2)

列表是什么&#xff1f; 列表是由一系列按特定顺序排列的元素组成。你可以创建包含字母表中的所有字母、数字 0~9 或所有家庭成员的列表&#xff1b;也可以将任何东西加入列表中&#xff0c;其中的元素之间可以没有任何关系。列表通常包含多个元素&#xff0c;因此给列表指定一…...

数据结构与算法——19.红黑树

这篇文章我们来讲一下红黑树。 目录 1.概述 1.1红黑树的性质 2.红黑树的实现 3.总结 1.概述 首先&#xff0c;我们来大致了解一下什么是红黑树 红黑树是一种自平衡的二叉查找树&#xff0c;是一种高效的查找树。红黑树具有良好的效率&#xff0c;它可在 O(logN) 时间内完…...

js题解(三)

文章目录 柯里化模块乘法改变上下文 柯里化 已知 fn 为一个预定义函数&#xff0c;实现函数 curryIt&#xff0c;调用之后满足如下条件&#xff1a; 1、返回一个函数 a&#xff0c;a 的 length 属性值为 1&#xff08;即显式声明 a 接收一个参数&#xff09; 2、调用 a 之后&a…...

CompletableFuture异步回调

CompletableFuture异步回调 CompletableFutureFuture模式CompletableFuture详解1.CompletableFuture的UML类关系2.CompletionStage接口3.使用runAsync和supplyAcync创建子任务4.设置子任务回调钩子5.调用handle()方法统一处理异常和结果6.线程池的使用 异步任务的串行执行thenA…...

Python中匹配模糊的字符串

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 如何使用thefuzz 库&#xff0c;它允许我们在python中进行模糊字符串匹配。 此外&#xff0c;我们将学习如何使用process 模块&#xff0c;该模块允许我们在模糊…...

PHP图片文件管理功能系统源码

文件图库管理单PHP源码直接解压就能用&#xff0c;单文件&#xff0c;indexm.php文件可以重新命名&#xff0c;上传到需要访问的目录中&#xff0c; 可以查看目录以及各个文件&#xff0c;图片等和下载及修改管理服务。 源码下载&#xff1a;https://download.csdn.net/downloa…...

(枚举 + 树上倍增)Codeforces Round 900 (Div. 3) G

Problem - G - Codeforces 题意&#xff1a; 思路&#xff1a; 首先&#xff0c;目标值和结点权值是直接联系的&#xff0c;最值不可能直接贪心&#xff0c;一定是考虑去枚举一些东西&#xff0c;依靠这种枚举可以遍历所有的有效情况&#xff0c;思考的方向一定是枚举 如果去…...

websocket逆向【python实现websocket拦截】

python实现websocket拦截 前言一、拦截的优缺点优点:缺点:二、实现方法1.环境配置2.代码三、总结前言 开发者工具F12,筛选ws后,websocket的消息是这样显示的,如何获取这里面的消息呢? 以下是本篇文章正文内容 一、拦截的优缺点 主要讲解一下websocket拦截的实现,现在…...

软件测试自动化的成本效益分析

随着软件测试技术的发展&#xff0c;人们已经从最初的手工测试转变为手工和自动化技术相结合的测试方法。目前&#xff0c;人们更多的是关心自动化测试框架、自动化测试工具以及脚本研究等技术方面&#xff0c;而在软件自动化测试方案的效益分析方面涉及较少。 软件测试的目的是…...

【Java】状态修饰符 final static

目录 final 修饰我们的成员方法、成员变量、类 示例代码&#xff1a; final 修饰的局部变量 示例代码&#xff1a; static 示例代码&#xff1a; static 访问特点&#xff1a; 示例代码&#xff1a; static关键字的用途 示例代码&#xff1a; static 修饰常量 示例…...

笔试编程ACM模式JS(V8)、JS(Node)框架、输入输出初始化处理、常用方法、技巧

目录 考试注意事项 先审完题意&#xff0c;再动手 在本地编辑器&#xff08;有提示&#xff09; 简单题515min 通过率0%&#xff0c;有额外log 常见输入处理 str-> num arr&#xff1a;line.split( ).map(val>Number(val)) 初始化数组 new Array(length).fill(v…...

learn掩码张量

目录 1、什么是掩码张量 2、掩码张量的作用 3、代码演示 &#xff08;1&#xff09;、定义一个上三角矩阵&#xff0c;k0或者 k默认为 0 &#xff08;2&#xff09;、k1 &#xff08;3&#xff09;、k-1 4、掩码张量代码实现 &#xff08;1&#xff09;、输出效果 &…...

激活函数介绍

介绍 神经网络当中的激活函数用来提升网络的非线性&#xff0c;以增强网络的表征能力。它有这样几个特点&#xff1a;有界&#xff0c;必须为非常数&#xff0c;单调递增且连续可求导。我们常用的有sigmoid或者tanh&#xff0c;但我们都知道这两个都存在一定的缺点&#xff0c…...

PyTorch 2.8镜像基础教程:torch.compile加速、FlashAttention-2启用参数详解

PyTorch 2.8镜像基础教程&#xff1a;torch.compile加速、FlashAttention-2启用参数详解 1. 镜像环境快速验证 在开始使用PyTorch 2.8镜像前&#xff0c;我们需要先确认环境是否正常工作。打开终端&#xff0c;运行以下命令&#xff1a; python -c "import torch; prin…...

阿里Qwen3Guard-Gen-WEB实战:从HTTP到HTTPS的安全升级

阿里Qwen3Guard-Gen-WEB实战&#xff1a;从HTTP到HTTPS的安全升级 1. 引言 1.1 为什么需要安全升级 在当今互联网环境中&#xff0c;HTTP协议已经无法满足基本的安全需求。当您部署阿里Qwen3Guard-Gen-WEB这款强大的内容安全审核工具时&#xff0c;如果仍然使用HTTP协议&…...

LabWindows/CVI报错

NON-FATAL RUN-TIME ERROR: "main.c", line 488, col 9, thread id 0x000057C4: Function GetCtrlVal: (return value -13 [0xfffffff3]). Invalid control ID 该怎么解决啊各位...

5步突破:用RVC变声器从零到专业音色转换的实战指南

5步突破&#xff1a;用RVC变声器从零到专业音色转换的实战指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI 语音数据小于等于10分钟也可以用来训练一个优秀的变声模型&#xff01; 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Co…...

OpenClaw隐私保护方案:百川2-13B本地化部署处理敏感数据实战

OpenClaw隐私保护方案&#xff1a;百川2-13B本地化部署处理敏感数据实战 1. 为什么选择本地化部署处理敏感数据 去年我在帮一家小型律所做文档自动化改造时&#xff0c;遇到了一个棘手问题。他们需要从大量客户合同中提取关键条款&#xff0c;但合同内容涉及大量商业机密和客…...

《奇迹 MU:荣耀出征》荣耀 12 区:职业选择 + 开荒路线 + 搬砖技巧全攻略!

作为正版奇迹 MU 授权的复古魔幻手游&#xff0c;《奇迹 MU&#xff1a;荣耀出征》的核心魅力不仅在于经典职业的热血回归与自由交易的搬砖乐趣&#xff0c;更在于从新手开荒到高阶攻坚的完整成长链路、全阶段高爆地图的刷宝惊喜、世界 BOSS 的全服混战与战盟攻城的巅峰对决。相…...

西南偏南音乐节:人工智能融入生活的喜与忧

【人工智能&#xff1a;艺术创作的新挑战与新机遇】在西南偏南音乐节上&#xff0c;人工智能与艺术的融合成为了热门话题。喵狼的文斯卡德卢贝克&#xff08;Vince Kadlubek&#xff09;认为&#xff0c;人工智能无限的创意工具随着时间推移会变得无趣&#xff0c;而有目的的艺…...

BetterGI 0.38.1版本安装失败?3步快速解决原神自动化工具启动问题

BetterGI 0.38.1版本安装失败&#xff1f;3步快速解决原神自动化工具启动问题 【免费下载链接】better-genshin-impact &#x1f368;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testin…...

开箱即用版Sambert语音合成:多情感AI配音部署与使用

开箱即用版Sambert语音合成&#xff1a;多情感AI配音部署与使用 1. 引言&#xff1a;多情感语音合成的价值与挑战 在智能客服、有声读物、虚拟主播等应用场景中&#xff0c;富有情感表现力的语音合成技术正变得越来越重要。传统语音合成系统往往只能生成单调机械的语音&#…...

如何用Penpot构建完整的用户体验地图和用户旅程:7步打造完美设计流程

如何用Penpot构建完整的用户体验地图和用户旅程&#xff1a;7步打造完美设计流程 【免费下载链接】penpot Penpot - The Open-Source design & prototyping platform 项目地址: https://gitcode.com/GitHub_Trending/pe/penpot Penpot作为开源的设计与原型平台&…...