首先明确两点:

a)python在创建类的时候,self指向的是类的实例而不是类属性

b)我们所创建的类的方法有两种作用,一种是改变类的属性,一种是改变实例的属性,这点一定要分清!

c)我们在调用类的一般的方法的时候,是将实例本身传递给方法

现在我们来说一下主要的三种类的方法:

实例方法classmethod(类方法)、staticmethod(静态类方法):

简单介绍一下它们的区别:

实例方法就是我们常见的类的方法,它们是与类的实例绑定在一起,所能操作的也是实例的属性而不能操作类的属性;

classmethod方法是与类绑定在一起,它们可以修改类的属性;

staticmethod方法不与类以及类的实例绑定在一起;

下面以一些实例,讲解一下它们的区别:

输出:

1

0

上面的初始化方法是实例方法,且是对实例进行了操作,虽然传入的参数是类的实例,但在这个方法中我们也可以对类进行操作,如下:

输出:

2

2

因为上面的初始化方法中没有对类的实例进行初始化,所以ik1实例的no_inst值就是类的属性

再看看关于classmethod和staticmethod:

还有一点注意的是:在使用@classmethod和@staticmethod时,它们只负责下面的一个方法;

最新文章

  1. BZOJ 4614 【Wf2016】 Oil
  2. UItableVIew初探
  3. [Note] Build your SDL2 Environment in Visual Studio 2013 配置你的SDL2运行环境
  4. hdu1712 分组背包
  5. bzoj3142
  6. 基于visual Studio2013解决C语言竞赛题之0412水仙花数
  7. IONIC2新建项目并添加导航
  8. arch安装以及配置记录
  9. 用python表白了!!!
  10. transition的属性变化
  11. xadmin插件开发
  12. 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
  13. 那些令人迷惑的名词:切图/H5/XML/REST
  14. java文件压缩与解压
  15. zabbix 安装时 到第三步时 database type 没有mysql选项
  16. C++ 项目中直接使用JsonCpp源码文件
  17. ubuntu配置(娱乐工作)
  18. javascript实现deepEqual和shallowEqual
  19. 08-spring学习-annotation配置
  20. datetime问题

热门文章

  1. 03 Zabbix常用的术语
  2. AtCoder Grand Contest 011
  3. 对信号量Semaphore的理解与运用
  4. Boost filessystem...
  5. Ruler.java
  6. python 数据类型 datatype
  7. ansible指路篇-安装及基本命令使用
  8. JavaSE学习总结(八)—— 异常处理(Exception)
  9. js中数组相关的Api
  10. Tomcat 或JBOSS java.lang.ArrayIndexOutOfBoundsException: 8192 解决方案【转】