104 lines
2.8 KiB
Markdown
104 lines
2.8 KiB
Markdown
# 构造函数
|
|
|
|
> 原文: [https://pythonbasics.org/constructor/](https://pythonbasics.org/constructor/)
|
|
|
|
构造函数是在创建对象时调用的方法。 此方法在类中定义,可用于初始化基本变量。
|
|
|
|
如果创建四个对象,则类构造函数将被调用四次。 每个类都有一个构造函数,但是不需要显式定义它。
|
|
|
|
|
|
|
|
## 示例
|
|
|
|
### 构造函数
|
|
|
|
每次创建对象时,都会调用一个方法。 该方法称为**构造函数**。
|
|
|
|
构造函数是使用函数`__init__`创建的。 作为参数,我们编写了`self`关键字,它引用了自身(对象)。 从视觉上看,该过程是:
|
|
|
|

|
|
|
|
在构造函数内部,我们初始化两个变量:腿和手臂。 有时,在面向对象编程的上下文中,变量被称为属性。 我们创建一个对象(`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) |