关于python中的类方法(classmethod)和静态方法(staticmethod)
2024-10-13 19:39:34
首先明确两点:
a)python在创建类的时候,self指向的是类的实例而不是类属性!
b)我们所创建的类的方法有两种作用,一种是改变类的属性,一种是改变实例的属性,这点一定要分清!
c)我们在调用类的一般的方法的时候,是将实例本身传递给方法!
现在我们来说一下主要的三种类的方法:
实例方法、classmethod(类方法)、staticmethod(静态类方法):
简单介绍一下它们的区别:
实例方法就是我们常见的类的方法,它们是与类的实例绑定在一起,所能操作的也是实例的属性而不能操作类的属性;
classmethod方法是与类绑定在一起,它们可以修改类的属性;
staticmethod方法不与类以及类的实例绑定在一起;
下面以一些实例,讲解一下它们的区别:
输出:
1
0
上面的初始化方法是实例方法,且是对实例进行了操作,虽然传入的参数是类的实例,但在这个方法中我们也可以对类进行操作,如下:
输出:
2
2
因为上面的初始化方法中没有对类的实例进行初始化,所以ik1实例的no_inst值就是类的属性!
再看看关于classmethod和staticmethod:
还有一点注意的是:在使用@classmethod和@staticmethod时,它们只负责下面的一个方法;
最新文章
- BZOJ 4614 【Wf2016】 Oil
- UItableVIew初探
- [Note] Build your SDL2 Environment in Visual Studio 2013 配置你的SDL2运行环境
- hdu1712 分组背包
- bzoj3142
- 基于visual Studio2013解决C语言竞赛题之0412水仙花数
- IONIC2新建项目并添加导航
- arch安装以及配置记录
- 用python表白了!!!
- transition的属性变化
- xadmin插件开发
- The error may exist in com/bjpowernode/dao/StudentDao.xml ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderExcept
- 那些令人迷惑的名词:切图/H5/XML/REST
- java文件压缩与解压
- zabbix 安装时 到第三步时 database type 没有mysql选项
- C++ 项目中直接使用JsonCpp源码文件
- ubuntu配置(娱乐工作)
- javascript实现deepEqual和shallowEqual
- 08-spring学习-annotation配置
- datetime问题