1. 什么是面向对象编程?
面向对象编程(Object Oriented Programming,简称OOP)是一种计算机编程架构,该架构通过将数据和操作数据的方法放在单个实体内部组合起来,以封装和管理复杂度。面向对象技术使得 这些实体变为对象,即拥有特定属性和方法,通过这些属性和方法实现对外部的数据访问和操作。
在Python中,所有东西都是对象。任何对象都有自己的方法和属性。这就是面向对象编程的思想。
2. 面向对象编程的三个基本特征
2.1 封装
封装指的是隐藏对象的属性和方法,只保留公共接口;它防止了外部程序修改对象内部状态,从而保证代码的稳定性和一致性。在面向对象中,每个对象都是一个封装了数据和对数据的操作的实体。
在Python中,可以将函数和变量封装在类中。
class Student:
name = "Alice"
age = 21
s = Student()
print(s.name) #输出"Alice"
2.2 继承
继承指的是创建一个新类,从已有的类中继承所有属性和方法。继承可以让我们编写更加通用的代码,减少代码的重复,也可以通过修改父类的属性和方法,轻松实现功能的拓展和修改。
在Python中,继承可以使用类名加括号的形式调用,也可以使用super()函数调用父类方法。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class Student(Person):
def __init__(self, name, age, grade):
super().__init__(name, age)
self.grade = grade
s = Student("Alice", 21, "Senior")
print(s.name) #输出"Alice"
print(s.age) #输出"21"
print(s.grade) #输出"Senior"
2.3 多态
多态指的是同一个方法在不同的类中的行为不同,这意味着可以使用一个父类类型的变量指向一个子类类型的对象,从而实现不同类型之间的互换。
在Python中,多态可以通过函数的参数传递实现。
class Animal:
def __init__(self, name):
self.name = name
def sound(self):
raise NotImplementedError("This method must be implemented.")
class Dog(Animal):
def sound(self):
return "Woof!"
class Cat(Animal):
def sound(self):
return "Meow!"
def animal_sound(animal):
print(animal.sound())
d = Dog("Rex")
c = Cat("Whiskers")
animal_sound(d) #输出"woof!"
animal_sound(c) #输出"meow!"
3. 面向对象编程的应用
面向对象编程可以用于各种不同的应用程序,包括桌面应用程序、Web应用程序和移动应用程序。在Python中,面向对象编程广泛应用于数据科学、机器学习、深度学习等领域。
下面以一个简单的例子说明如何用面向对象编程实现一个计算器。
class Calculator:
def __init__(self):
self.result = 0
def add(self, x, y):
self.result = x + y
return self.result
def subtract(self, x, y):
self.result = x - y
return self.result
c = Calculator()
print(c.add(1, 2)) #输出"3"
print(c.subtract(10,5)) #输出"5"
4. 总结
面向对象编程是一种利用类、对象、封装、继承和多态等概念进行编程的方法。在Python中,所有东西都是对象,面向对象技术使得这些实体变为对象,即拥有特定属性和方法,通过这些属性和方法实现对外部的数据访问和操作。面向对象编程可以用于各种不同的应用程序,在Python中它广泛应用于数据科学、机器学习、深度学习等领域。