Python 构造函数

2025 年 4 月 21 日 | 阅读 4 分钟

构造函数是一种特殊类型的方法(函数),用于初始化类的实例成员。

在 C++ 或 Java 中,构造函数的名称与其类相同,但在 Python 中,它对构造函数的处理方式有所不同。它用于创建对象。

构造函数可以分为两种类型。

  1. 参数化构造函数
  2. 无参数构造函数

当我们创建该类的对象时,将执行构造函数定义。构造函数还会验证是否有足够的资源供对象执行任何启动任务。

在 Python 中创建构造函数

在 Python 中,方法 __init__() 模拟类的构造函数。实例化类时会调用此方法。它接受 self 关键字作为第一个参数,这允许访问类的属性或方法。

我们可以在创建类对象时传递任意数量的参数,这取决于 __init__() 的定义。它主要用于初始化类属性。每个类都必须有一个构造函数,即使它仅依赖于默认构造函数。

请考虑以下示例以初始化 Employee 类的属性。

示例

输出

ID: 101 
Name: John
ID: 102 
Name: David

计算类的对象数量

当我们创建类的对象时,会自动调用构造函数。请考虑以下示例。

示例

输出

The number of students: 3

Python 无参数构造函数

当我们不想操作值或构造函数仅将 self 作为参数时,使用无参数构造函数。请考虑以下示例。

示例

Python 参数化构造函数

参数化构造函数除了 self 之外还有多个参数。请考虑以下示例。

示例

输出

This is parametrized constructor
Hello John

Python 默认构造函数

当我们在类中不包含构造函数或忘记声明它时,它就成为默认构造函数。它不执行任何任务,但会初始化对象。请考虑以下示例。

示例

输出

101 Joseph

单个类中多个构造函数

让我们看一下另一种情况,如果我们在类中声明两个相同的构造函数会发生什么。

示例

输出

The Second Constructor

在上面的代码中,对象 st 调用了第二个构造函数,而这两个构造函数具有相同的配置。第一个方法无法被 st 对象访问。在内部,如果该类有多个构造函数,则该类的对象将始终调用最后一个构造函数。

注意:Python 中不允许构造函数重载。

Python 内置类函数

下表描述了类中定义的内置函数。

序号函数描述
1getattr(obj,name,default)它用于访问对象的属性。
2setattr(obj, name,value)它用于为对象的特定属性设置特定值。
3delattr(obj, name)它用于删除特定属性。
4hasattr(obj, name)如果对象包含某个特定属性,则返回 true。

示例

输出

John
23
True
AttributeError: 'Student' object has no attribute 'age'

内置类属性

除了其他属性之外,Python 类还包含一些内置类属性,这些属性提供有关类的信息。

下表给出了内置类属性。

序号属性描述
1__dict__它提供包含有关类命名空间信息的字典。
2__doc__它包含一个字符串,该字符串具有类文档。
3__name__它用于访问类名。
4__module__它用于访问定义该类的模块。
5__bases__它包含一个元组,其中包括所有基类。

示例

输出

None
{'name': 'John', 'id': 101, 'age': 22}
__main__

下一主题Python 继承