Python __init__


python中的__init__是什么意思?

python中的__init__称为初始化方法/函数(initializer method)。其作用是允许我们在创建类的实例时传递参数。每次创建类的实例时,python都会首先调用__init__方法。


举例

既然__init__方法是初始化传递参数的,那么我么来看看定义__init__方法和不定义有什么区别。


不定义__init__


>>> class Geocalculate:
      "一个类"

>>> a = Geocalculate
>>> 

这里,创建了一个类Geocalculate,并创建了类Geocalculate的一个实例a

查看一下a:


>>> a
__main__.Geocalculate object at 0x00000285933C63D0

这时,如果我们要给实例增加一些属性,我们可以:


>>> a.x = 1
>>> a.y = 2
>>> a.x
1

那么这个工作是否可以在创建实例a的时候就做了呢?下面试试:


>>>a = Geocalculate(1,2)

Traceback (most recent call last):
  File "input", line 1, in module
TypeError: Geocalculate() takes no arguments

发现报错,提示我们Geocalculate()不接受参数。

这时就该是使用__init__方法的时候了。


定义__init__方法

在前面例子的出上,我们在类中加上__init__方法:


>>> class Geocalculate:
      def __init__(self,x,y):
          self.x = x
          self.y = y
  • self:指__init__函数的第一个参数就是实例本身,定义中固定这样写,但在创建实例时传递的参数不用写self,直接从x开始,看后面的例子。

这时,尝试创建实例并同时传递参数:


>>> a = Geocalculate(1,2)
>>> a.x
1

发现已经可以了!