Python类的方法

news2024/12/25 9:20:11

Python类的方法主要分为实例方法、类方法和静态方法三种。

1 实例方法

以self作为第一个参数的方法,就是类的实例方法。该方法由类的实例调用,Python会把调用该方法的实例对象传递给self。

如下代码定义了一个名为A的类。

class A:
    def __init__(self):
        self.i = 0
    def i_f(self):
        self.i += 1

其中,i_f()是类A的实例方法,i是类A的实例变量。

a1 = A()
a1.i_f()
a2 = A()

以上代码中,定义了类A的对象a1、a2,并且通过a1调用了i_f(),此时i_f()方法的self参数的值是a1,,而a1.i的值变为1,而a2.i的值依然是0,如图1所示。

图1 a1和a2的关系

2 类方法

类方法会作用于整个类,对类做出的任何改变会对它所有的实例对象产生影响。类方法一般使用前缀@classmethod来修饰。与实例方法类似,类方法的第一个参数是类本身,该参数一般被写为cls,代码如下所示。

class A:
    i = 0
    def __init__(self):
        A.i += 1
    @classmethod
    def show_i(cls):
        print(cls.i)

其中,i是A的类变量,每次产生A的实例对象时,都会对类变量i进行加1操作。show_i()被@classmethod修饰,因此它是A的类方法,该方法能够打印出对类A进行实例化的次数。

a1 = A()
a2 = A()
a3 = A()
A.show_i()

以上代码中,因为对A继续了三次实例化,因此打印出的结果是3。

3 静态方法

静态方法用@staticmethod修饰,它既不会影响类,也不会影响类的对象。代码如下所示

class A:
    def __init__(self):
        self.i = 0
    @staticmethod
    def set_i():
        i = 1

其中,类A的set_i()方法是静态方法,可以看出静态方法即没有self参数,又没有cls参数。

a1 = A()
A.set_i()

此时,虽然调用了set_i()方法,但是a1.i的值依然是0。

需要注意的是,静态方法也可以不用@staticmethod来修饰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/975014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无频闪护眼灯哪个好?什么是无频闪

随着科技的不断发展,工作时使用电子设备越来越普遍,如何保护我们的眼睛不受蓝光、频闪等危害就变得极其重要了。护眼台灯,顾名思义就是保护眼睛的台灯,其工作原理是在光源处使用特殊的防蓝光灯珠,并通过控制电流的稳定性来达到防频…

【STM32】文件系统FATFS与Flash的初步使用

文件系统简介 简介可以不看,直接看移植步骤 文件系统是介于应用层和底层间的模糊层。底层提供API,比如说使用SDIO或者SPI等读写一个字节。文件系统把这些API组合包装起来,并且提供一些列函数,我们可以使用这些函数进行更进一步的…

开发指导—利用组件插值器动画实现 HarmonyOS 动效

一. 组件动画 在组件上创建和运行动画的快捷方式。具体用法请参考通用方法。 获取动画对象 通过调用 animate 方法获得 animation 对象&#xff0c;animation 对象支持动画属性、动画方法和动画事件。 <!-- xxx.hml --><div class"container"> <di…

IntelliJ IDEA中用git提交代码时忽略文件的设置

设置IDEA自动过滤掉不需要提交的文件或文件夹&#xff1a;如*.iml, .idea,target 文件夹 1、进入idea设置界面 Windows环境&#xff1a;File - Settings - Editor - File Types Mac环境&#xff1a;Preferences… - Editor - File Types 2、在下面的ignore files and folders…

SPA和MPA

SPA与MPA是什么 **SPA&#xff08;Single Page Application&#xff0c;单页应用&#xff09;**在首次加载时会下载一个单独的HTML文件&#xff0c;然后通过JavaScript动态加载内容&#xff0c;无需每次页面刷新时重新加载整个页面。**MPA&#xff08;Multi-Page Application&…

【校招VIP】java语言考点之关键字string

考点介绍&#xff1a; string作为一个特殊类&#xff0c;正常情况下&#xff0c;是遵循对象的值和引用的使用。有一定的考察频度&#xff0c;但有的时候也能代表相等&#xff0c;与常量区的插入有关。 java语言考点之关键字string-相关题目及解析内容可点击文章末尾链接查看&a…

redis缓存失效时间没到,数据莫名丢失问题排查

述&#xff1a;redis缓存了token&#xff0c;失效时间为24小时&#xff0c;可是每次不到多久&#xff0c;就提示token失效&#xff0c;重新登录后&#xff0c;没用多久&#xff0c;又提示token失效。查看了下缓存&#xff0c;发现数据全部没掉了&#xff0c;并且多了几个back1&…

电脑提示“系统找不到指定的文件”怎么办?

“系统找不到指定的文件”对于Windows用户来说是一个很常见的错误&#xff0c;尤其是Win10用户&#xff0c;经常会遇到Win10提示找不到指定文件。在此错误后面有时还会出现错误代码&#xff1a;0x80070002&#xff0c;但是&#xff0c;故障类型或代码在不同的操作系统规范上是不…

史上最全PMP学习资料、项目管理资料、备考经验包,3A一次通过

你是否也有过类似的经历&#xff1f; 为了获取备考资料&#xff0c;有的同学在论坛、知乎或者相关垂直类网站下载了很多的资料&#xff0c;这些资料大部分是机构进行获客引流的资料&#xff0c;没有真正的干货。 经常会看到10G、20G的资料包&#xff0c;感觉内容很丰富&#xf…

Spring学习|Spring简介、IOC控制反转理解、IOC创建对象方式

Spring Spring:春天------>给软件行业带来了春天! 2002&#xff0c;首次推出了Spring框架的雏形: interface21框架! Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。 RodJohnson&#xff0c;Spring Framework创始人&…

关于某次授权的大型内网渗透测试

背景&#xff1a; 接到朋友邀请&#xff0c;要进行一个授权站点的渗透&#xff0c;但是进去实际环境才发现是多域控主机。也学习了很多后渗透手法&#xff0c;比较受益匪浅。 前期渗透&#xff1a; 打点&#xff1a;&#xff08;任意文件上传&#xff09; 直接发现头像处任…

目录与文件系统

无论在哪个计算机系统中&#xff0c;文件系统结构都应该是一样的一层或者几层的话太多太乱不适用用目录实现一个树状结构&#xff0c;划分后层次清晰如果把目录下所有的文件的FCB都存取&#xff0c;然后对比没必要太麻烦了 所以数据盘块集合中存放目录下文件字符串和对应的编号…

Rocky(Centos)安装中文字体(防止中文乱码)

1、查看字体列表 运行下列命令 fc-list 若出现&#xff0c;下面截图&#xff0c;则需要安装字体管理软件 安装字体库&#xff0c;运行&#xff1a; yum -y install fontconfig 当看到下图的提示信息时说明已安装成功&#xff1a; 二、添加中文字体 1&#xff09;window…

文件夹怎么安全加密?文件夹加密软件怎么样?

我们在使用电脑的过程中&#xff0c;习惯用文件夹来管理电脑数据&#xff0c;为了文件夹数据安全&#xff0c;我们需要使用加密的方式来进行保护。那么&#xff0c;文件夹该怎么安全加密呢&#xff1f;下面我们就来了解一下。 文件夹加密软件安全吗&#xff1f; 文件夹加密软…

功率放大器主要作用是什么呢

功率放大器是一种电子设备&#xff0c;主要作用是将输入信号的功率增加到更高的水平&#xff0c;以便能够驱动高功率负载。在许多应用中&#xff0c;信号源产生的信号往往具有较低的功率&#xff0c;无法直接满足一些要求较高的设备或系统的需求。而功率放大器则可以增强信号的…

当面试被问到 Java 内存模型,不妨反问面试官:您问得是 Java Memory Model 呢?还是 JVM 运行时数据区?

目录 1. JVM 运行时数据区 2. Java 内存模型 最近在牛客上看到这样一个帖子&#xff0c;大概就是在面试中呢&#xff0c;被面试官问到了 Java 内存模型&#xff0c;面试的这位小伙呢&#xff0c;也是掌握了 JVM 内存布局的相关知识&#xff0c;但是不知道面试官问的 Java 内存…

行测图形推理规律(一)元素组成

题库&#xff1a;粉笔网题库 (fenbi.com) 不知道和测评的行测题库是不是一样的&#xff0c;但是总结的规律应该是一样的。 规律并不唯一&#xff0c;题库的答案也只是参考答案&#xff0c;切勿当杠精&#xff0c;你觉得你的规律更合适就别管。本人所归纳的规律仅代表本人想法…

淘宝数据库,主键如何设计的?

聊一个实际问题&#xff1a;淘宝的数据库&#xff0c;主键是如何设计的&#xff1f; 某些错的离谱的答案还在网上年复一年的流传着&#xff0c;甚至还成为了所谓的 MySQL 军规。其中&#xff0c;一个最明显的错误就是关于MySQL 的主键设计。 大部分人的回答如此自信&#xff…

uni-app点击复制指定内容(点击复制)

官方api uni.setClipboardData(OBJECT) uni.setClipboardData({data: 要被复制的内容,success: function () {console.log(success);} });

虹科分享 | MKA:基于先进车载网络安全解决方案的密钥协议

MKA作为MACsec的密钥协议&#xff0c;具有安全、高效、针对性强的特点&#xff0c;为您的汽车ECU通讯创建了一个安全的通信平台&#xff0c;可以助力您的各种汽车创新项目&#xff01; 虹科方案 | 什么是基于MACsec的汽车MKA 一、MACsec在汽车行业的应用 在以往的文章中&#…