Python是一门解释型、面向对象以及动态数据类型的高级程序设计语言。正因为如此,在Python中创建一个类和对象是很容易的。面向对象编程OOP——Object Oriented Programming,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行,为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递
面向对象编程的基本概念
- 类(Class):是对象的蓝图或模板,定义了对象的属性和方法。
- 对象(Object):是类的实例,具有类定义的属性和方法。
- 属性(Attribute):是定义在类中的变量,用于描述对象的特征。
- 方法(Method):是定义在类中的函数,用于描述对象的行为。
- 封装(Encapsulation):将数据(属性)和操作数据的方法(函数)捆绑在一起,形成一个整体(即对象)。
- 继承(Inheritance):一个类可以继承另一个类的属性和方法,继承是类之间的一种关系,用于实现代码的重用。
- 多态(Polymorphism):允许不同类的对象对同一消息作出响应,即同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
类与实例
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同 。
类的定义格式如下图所示
定义一个简单的类
class Student:
def __init__(self, n, s):
self.name = n
self.__score = s
def __a(self):
print("1")
def print_sco(self):
self.__a()
print(f"{self.name}的成绩是{self.__score}")
def get_grade(self):
if self.__score > 90:
print("A")
else:
print("B")
if __name__ == '__main__':
ww = Student("ww", 88)
ww.print_sco()
#输出结果:1
#ww的成绩是88
对象
“对象”(Object)是计算机科学和编程中的一个核心概念,它代表了现实世界中的实体或概念在程序中的抽象表示。在编程中,对象通常由数据和操作这些数据的函数(也称为方法)组成。这种结构使得对象能够模拟现实世界的实体,如人、车、动物或任何可以想象的事物。
面向对象主要有三大特点:封装、继承和多态。
封装
封装(Encapsulation)是面向对象编程(OOP)中的一个核心概念,它指的是将对象的属性和方法(也称为操作或服务)结合成一个独立的单元,并尽可能隐藏对象的内部细节。封装的目的是保护对象的状态信息不被外部随意访问和修改,同时提供一种受控的方式来访问和修改这些状态信息。
封装的特点
- 信息隐藏:封装通过限制对对象内部属性和方法的直接访问,隐藏了对象的内部实现细节。这使得对象的使用者只能通过对象提供的公共接口(即方法)来与对象进行交互,而无法直接访问或修改对象的私有属性。
- 访问控制:封装允许类设计者指定哪些属性和方法是可以被外部访问的(通常是公开的),哪些是只能在类的内部访问的(通常是私有的或受保护的)。这种访问控制机制有助于保护对象的状态不被意外破坏,并保证了数据的可靠性和一致性。
- 接口提供:封装为对象提供了一个清晰的接口,使得对象的使用者可以通过这个接口来与对象进行交互。这个接口定义了对象可以执行的操作和这些操作所需的参数,以及操作的结果。
封装的好处
- 提高代码的安全性:通过隐藏对象的内部实现细节,封装可以防止外部代码直接访问和修改对象的私有属性,从而减少了数据被意外破坏的风险。
- 提高代码的复用性:封装使得类的内部实现细节与外部接口分离,这使得类更容易被复用。因为只要接口保持不变,类的内部实现就可以在不影响外部代码的情况下进行修改。
- 提高代码的可维护性:封装使得类的内部实现细节对外部代码是透明的,这意味着当类的内部实现发生变化时,只要接口保持不变,外部代码就不需要修改。这大大降低了代码维护的复杂度和成本。