首先明确两点:

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

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

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

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

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

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

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

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

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

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

输出:

1

0

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

输出:

2

2

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

再看看关于classmethod和staticmethod:

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

更多相关文章

  1. python中的类与方法
  2. 如何为Google Cloud Endpoints方法生成pydoc文档?
  3. python笔记7:接口实现方法
  4. 用于搜索和替换大字符串的最快Python方法
  5. 【Python】Python3 字典 copy()方法
  6. jieba(结巴)Python分词器加载到Eclipse方法
  7. python,os模块的常用方法
  8. Python语言的特点、程序设计基本方法
  9. Pandas 文本数据方法 findall( )

随机推荐

  1. 数据结构 #1 浅谈数组
  2. 再谈文件读写:判断文件的几种方法及其优劣
  3. 从一篇Blog看两个并发编程错误
  4. 每日前端夜话(0x04):2018年JavaScript状态
  5. LeetCode #27 移除元素
  6. 以B站C语言视频为基础的课后总结(一)
  7. LeetCode #26 删除排序数组中的重复项
  8. 排序算法 #5 归并排序
  9. 来自Kenneth Reitz大神的建议:避免不必要
  10. 满满的一篇,全是复杂度分析核心知识点