本文最后更新于 1081 天前,其中的信息可能已经有所发展或是发生改变。
背景简介
- python中的class,中文翻译成类。而与类相对应的function则称为函数。之前一直写函数,不怎么愿意写class,真实的原因是,在使用python之前,使用的R语言,是函数式编程的写法,基本没怎么接触过类。也就不知道怎么写类,看到别人的代码,对于self和init这两个一直难以理解。
- 正好最近要写class,索性不再逃避,整理一下思路,记录下来。主要是下面这个网站讲得比较通俗易懂,我也主要是将它翻译过来介绍一下。
一个简单的class是什么样子的?
class MyNewClass:
'''This is a docstring. I have created a new class'''
pass
函数是用def定义的,类是用class定义的。函数是有参数的,类不需要加参数和括号。
说类不需要加参数和括号这话并不准确,其实是省略了。
class MyNewClass(Object):
其实完整的写法是上面的这种。
怎么写class?
理解__init__()
函数
init 以建造房屋为例
- 用来初始化实例
- 任何用此类进行构建的实例,都会有这些特征
- 在类生成一个实例时(通过图纸设计的房屋,构建好之后,都会配备基本的厨卫设施,都是开发商定制的),会首先运行init函数里面的内容。
理解__开头的函数
__开头的函数(私有函数,局部变量)
- 只有在这个类里面才可以使用,在生成实例后,无法通过实例来调用此函数。
- init也是两道下划线开头,意味着不能通过外调用
理解self
要理解self,要先理解类的运行机制
- self是一种通俗的约定,也可以不用self,只不过大家都使用这个作为默认的参数
self的作用(以建造房屋为例)
- 类可以相当于设计图纸
- 实例就是建好的具体房子
- 而self就是实例,具体的房子
- 假定有a,b,c三家,那么在生成实例的时候,第一个实例a在类实例化的过程中,self就等于a,在b进行类实例化的过程中,self就等于b
- 也可以理解成self就是一个类中的全局变量