Python中面向对象编程的 8 个技巧
OOP 或面向对象编程是一种编程范式,它围绕数据或对象组织软件设计,并依赖于类和对象的概念,而不是函数和逻辑。面向对象编程确保代码的可重用性并防止冗余,因此即使在机器学习、人工智能、数据科学等软件工程以外的领域也非常流行。有许多面向对象的编程语言,如Java、JavaScript、C++ 、 Python等。
Python中的面向对象编程基础
如前所述, OOP 是一种编程范式,它使用对象和类,旨在在编程中实现现实世界的实体。 OOP的主要概念如下:
1.继承:一个类从另一个类继承方法和属性的过程。继承其属性和方法的类称为父类,从父类继承的类称为子类。继承是面向对象编程最重要的方面,它提供了代码的可重用性。
2.封装: “封装”这个词的意思是封装一些东西,封装的原理也是如此。在 OOP 中,数据和对该数据进行操作的函数通过封装封装在一起成为一个单元。通过这种方法,我们可以隐藏一个类的私有细节,并且只能暴露与它交互所需的功能。
3.多态性:多态性取自希腊词Poly和morph,分别表示许多和形状。因此,在 OOP 中,多态是指具有相同名称但具有不同功能的函数。多态性有助于使编程更直观、更容易。
4.数据抽象:抽象是OOP的另一个功能,我们隐藏了内部细节或函数的实现,只显示功能。换句话说,用户知道“函数做什么”,但他们不知道“它是怎么做的”,因为他们只能看到函数的基本实现,而内部工作是隐藏的。
要了解有关面向对象编程的 4 个支柱的更多信息,请单击此处。在这篇博客中,我们将讨论Python中面向对象编程的 8 个技巧。那么让我们来看看。
1.类和实例级数据的区别
在继承下,学习区分类级和实例级数据非常关键,因为继承是面向对象编程的核心概念之一。实例属性是属于一个对象的Python变量,并且对它来说是唯一的。它只能在这个对象的范围内访问,并且在类的构造函数中定义。然而,类属性对于类而不是特定对象是唯一的,并且在构造函数之外定义。在编写代码时,实例级数据应与类级数据分开,并且不应干扰它。
2. 使用有意义的名字
编写面向对象编程时要遵循的最佳实践之一是使用有意义的名称,记住命名约定必须遵循驼峰式大小写。在命名属性和函数时也有一些规则适用。因此,我们应该始终以一个类、属性或函数只负责一项特定任务的方式命名设计。
3.了解静态的使用
静态意味着成员绑定到类级别而不是实例级别。静态方法不能访问或修改类的状态。通过使用静态,该方法不需要访问类实例。此外,使用静态方法可以提高代码的可读性并节省大量内存。
4. 在内部修饰符和私有修饰符之间做出决定
Python中的访问说明符在保护数据免受未经授权的访问和被利用方面发挥着重要作用。默认情况下,类的所有数据成员和成员函数都声明为 public,而声明内部方法或属性时,使用前导下划线“_”。另一方面,要声明一个私有的,使用双前导下划线'__'。这种做法有助于确定特定数据成员或类的成员函数的访问控制,并告诉用户代码的哪些部分不公开且不应依赖。
5. Python中的文档字符串
开发人员习惯于在代码中编写注释,但注释并不总是提供最结构化的工作流方式。对于这种不便, Python结构化文档或文档字符串提供了一种将文档与Python公共模块、函数、类、方法等相关联的便捷方式。与源代码注释不同,文档字符串描述了函数的作用而不是如何。 Python中的文档字符串使用“'三单引号”'或“”“三双引号”“”声明。
6. pep8 指南
Python Enterprise Proposal也称为PEP是Python包的编码约定。除了编写具有适当逻辑的代码外,还有许多其他重要因素会影响代码的质量。 PEP 8 是 Guido van Rossum、Barry Warsaw 和 Nick Coghlan 于 2001 年编写的文档,其主要目的是提高代码的可读性和一致性。应该记住三个重要的 pep8 准则,即确保每行代码限制为 80 个字符,所有库都应在开始时导入,并消除代码中存在的冗余变量或中间变量。
7. 设置对属性的访问
类的属性是用于实现类的访问控制并定义其实例的相应方法的函数对象。为了访问和操作类的属性, Python有一些内置方法。它们是getattr() 、 hasattr() 、 setattr()和delattr() 。 getattr()函数有助于访问对象的属性。 hasattr()函数用于检查属性是否存在。 Setattr()用于设置属性。如果该属性不存在,则将创建一个,而delattr()用于删除一个属性。
8. 使用抽象类
抽象类为组件的不同实现提供通用接口。在面向对象编程中,开发人员需要减少编码量,因此使用了抽象类。使用抽象类是因为它适用于各种各样的对象,并有助于创建一组方法,这些方法必须在从该抽象类构建的任何子类中创建。