# 构造函数

> 原文： [https://pythonbasics.org/constructor/](https://pythonbasics.org/constructor/)

构造函数是在创建对象时调用的方法。 此方法在类中定义，可用于初始化基本变量。

如果创建四个对象，则类构造函数将被调用四次。 每个类都有一个构造函数，但是不需要显式定义它。



## 示例

### 构造函数

每次创建对象时，都会调用一个方法。 该方法称为**构造函数**。

构造函数是使用函数`__init__`创建的。 作为参数，我们编写了`self`关键字，它引用了自身（对象）。 从视觉上看，该过程是：

![constructor](img/8633b18ca0aedbc0c2aa0841fa26afdf.jpg)

在构造函数内部，我们初始化两个变量：腿和手臂。 有时，在面向对象编程的上下文中，变量被称为属性。 我们创建一个对象（`bob`），仅通过创建它，即可初始化其变量。

```py
class Human:
   def __init__(self):
       self.legs = 2
       self.arms = 2

bob = Human()
print(bob.legs)

```

现在，新创建的对象已设置了变量，而无需手动定义它们。 您可以创建数十或数百个对象，而不必每次都设置值。

### python `__init__`

函数`__init__(self)`将构建您的对象。 它不仅是您可以在此处设置的变量，还可以调用类方法。 初始化对象所需的一切。

假设您有一个“飞机”类，该飞机一经创建便应开始飞行。 起飞涉及许多步骤：加速，更换襟翼，关闭车轮等。

可以在方法中定义默认操作。 这些方法可以在构造函数中调用。

```py
class Plane:
    def __init__(self):
        self.wings = 2

        # fly
        self.drive()
        self.flaps()
        self.wheels()

    def drive(self):
            print('Accelerating')

    def flaps(self):
            print('Changing flaps')

    def wheels(self):
            print('Closing wheels')

ba = Plane()

```

总结一下：如果创建对象，则会调用构造函数。 在构造函数中，您可以设置变量和调用方法。

### 默认值

一个类的构造函数是唯一的：从不同的类初始化对象将调用不同的构造函数。

可以在构造函数中设置新创建对象的默认值。

下面的示例显示了两个带有构造函数的类。 然后创建两个对象，但调用不同的构造函数。

```py
class Bug:
   def __init__(self):
       self.wings = 4

class Human:
   def __init__(self):
       self.legs = 2
       self.arms = 2

bob = Human()
tom = Bug()

print(tom.wings)
print(bob.arms)

```

但是从一个类创建多个对象将调用相同的构造函数。

## 练习

请尝试以下练习：

1.  制作两个其他对象
2.  添加另一个变量并将其初始化

[下载答案](https://gum.co/HhgpI)