geekdoc-python-zh/docs/pythonbasics/038.md

104 lines
2.8 KiB
Markdown

# 构造函数
> 原文: [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)