📅  最后修改于: 2023-12-03 15:42:26.664000             🧑  作者: Mango
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,通过对象的封装、继承、多态等特性,将程序的复杂性降低,提高代码的可复用性和可维护性。
面向对象的基本数据模型由类与对象两部分组成。类定义了对象的属性和方法,对象则是类的一个实例。以下是一个简单的类定义示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print("Hello, my name is", self.name, "and I'm", self.age, "years old.")
上述代码定义了一个名为Person的类,拥有两个属性:name和age,和一个方法:say_hello,该方法用于输出一句问候语。
通过创建对象,我们可以使用该类:
person = Person("Alice", 20)
person.say_hello() # 输出:Hello, my name is Alice and I'm 20 years old.
以上代码创建了一个名为person的Person对象,name属性为"Alice",age属性为20,调用say_hello方法输出问候语。
面向对象编程的一个核心思想是封装。封装指的是将数据与操作数据的方法包装在一起,避免外部直接访问和修改数据,以保护数据的完整性和安全性。
在上述Person类中,为了控制对属性的访问和修改,通常会将属性标记为私有(private),只允许通过内部方法访问和修改:
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
def say_hello(self):
print("Hello, my name is", self.__name, "and I'm", self.__age, "years old.")
def get_name(self):
return self.__name
def set_name(self, name):
self.__name = name
def get_age(self):
return self.__age
def set_age(self, age):
self.__age = age
在上述代码中,我们在属性名前加上了两个下划线,将属性标记为私有。除了定义访问和修改属性值的方法,外部无法直接访问和修改属性。
继承是面向对象编程的另一个核心思想。通过继承,子类可以继承父类的属性和方法,并可以根据需要重写和扩展父类的方法。
以下是一个简单的继承示例:
class Employee(Person):
def __init__(self, name, age, salary):
super().__init__(name, age)
self.__salary = salary
def get_salary(self):
return self.__salary
def set_salary(self, salary):
self.__salary = salary
def say_hello(self):
super().say_hello()
print("I'm an employee and my salary is", self.__salary)
在上述代码中,我们定义了一个Employee类,它继承了Person类。除了继承了Person类的属性和方法,Employee类还新增了一个salary属性和两个访问和修改salary的方法。
此外,Employee类还重写了Person类的say_hello方法。Employee类的say_hello方法首先调用Person类的say_hello方法输出问候语,然后输出自己的员工信息。
多态指的是同一个类的不同实例,可以有不同的行为。在上述示例中,Employee类重写了Person类的say_hello方法,Person类和Employee类的say_hello方法在输出问候语后,行为不同,体现了多态的特性。
以上是面向对象的基本数据模型的介绍,其中包含了类、对象、封装、继承和多态等基本概念。面向对象编程的思想可以帮助我们更好地组织代码,提高代码的可复用性和可维护性。