面向对象模式

17 Mar 2025 | 4 分钟阅读

面向对象模式是最常见的设计模式类型,几乎可以在每个高级编程语言中找到。在这种方法中,我们创建一个对象和特定的类,并使用该类的对象来使用该类的功能。面向对象编程 (oops) 概念由以下组件组成。

  • Class
  • Object
  • 构造函数
  • 继承
  • 封装
  • 多态

我们将简要讨论上述组件。要详细了解 oops 概念,请访问我们的 Python 面向对象教程

Class

类是对象的蓝图;它包含方法和构造函数。我们使用 class 关键字来定义类。一个 Python 类看起来如下所示。

类可以包含以双下划线 (__ ) 开头的特殊属性。例如 - __init__() 是一个非参数化构造函数。

Object

使用对象来访问类的属性。我们可以创建如下的类对象。

输出

The salary is 20000

构造函数

构造函数是特殊的方法,每当该类的新对象被实例化时,它们会自动调用。它们以双下划线 __ 开头,被称为特殊函数。构造函数定义为 __int__() 函数。它用于初始化所有变量。

示例 -

输出

The employee details: Sudhir 25

继承

继承是将一个类的属性派生到另一个类的过程。从另一个类的属性派生的类称为子类或子类,而由另一个类派生的类称为父类或基类。继承提供了代码的重用性。

让我们理解下面的例子。

示例 -

输出

Bird Speaking
Dog Barking

self 参数

self 在 Python 中的工作方式与 C++ 中的“this”相同。它引用当前类的函数,我们可以在类函数中访问数据。它充当变量,但不会调用数据。

示例 -

输出

Mathew
Mathew

封装

C++不同,Python不支持 public、protected 和 private 等关键字来定义数据可访问性。默认情况下,Python 中的所有数据都是公共的。但是它提供了定义任何方法或变量为私有的功能。我们可以使用“__”在变量或方法前面隐藏其属性。让我们理解以下示例 -

输出

Traceback (most recent call last):
  File "", line 10, in 
AttributeError: 'Employee' object has no attribute 'name'

有一个特殊的语法可以用来访问 Python 中的私有数据或方法。该语法实际上是它的更改名称。让我们理解以下示例。

示例 -

输出

Mathew
25

在上面的代码中,我们定义了变量 age 作为该类的私有成员。为了访问它,我们使用了使用类对象的特殊语法。

多态

多态是面向对象概念最重要的方面之一。Python 是一种动态类型语言,可以跟踪变量类型。多态性用于以相同的方式实现许多事情。

示例 -

输出

30
Javatpoint20

正如我们在上面的代码中看到的,'add' 操作不仅支持整数,还支持字符串。这是一个简单的多态性例子。

Python 中的许多操作和函数都是多态的。因此,只要我们使用多态运算符和函数,即使我们没有这个目的,多态性也会存在。

面向对象模式的优点

以下是 Oops 设计模式的一些重要优点。

  • 它支持动态类型绑定,这意味着类的实例可以在运行时动态更改。
  • Python 支持多重继承和运算符重载,并具有一些 OOPs 语言没有的高级定义。
  • Python oops 概念不支持 private、public 和 protected 关键字,因为它会在语法中创建一些复杂性。正如 Python 的发明者 Guido Van Rossum 所说,“丰富的语法带来的负担多于帮助。” 我们可以使用继承来重用代码。
  • 多态性在程序中提供了灵活性。使用多态性,我们可以在父类中创建相同的方法,并且它可以在所有子类中工作。
  • 它提供了有效的解决问题的方法。OOPs 概念允许我们将代码分解为我们可以解决的微小问题。

面向对象模式的缺点

Python OOPs 模式也有一些缺点。这些缺点如下所示。

  • 创建基于对象交互的程序非常复杂。
  • 对于某些人来说,学习需要时间。
  • 一些 oops 程序更大;它也会占用很多执行时间。

下一个主题观察者设计模式