目录
面向对象编程 (OOP) 简介
面向对象编程 (OOP) 是一种强大的编程范式,它将代码组织在“对象”周围,而不是函数和逻辑。这些对象封装了数据(属性)和操作这些数据的功能(方法)。这种方法促进了模块化、可重用性和可维护性。OOP 的关键原则包括:
- 抽象:通过仅建模必要信息来简化复杂系统。
- 封装:将数据和方法捆绑在类中,保护数据完整性并隐藏内部实现细节。
- 继承:基于现有类(父类)创建新类(子类),继承属性和方法。
- 多态性:允许不同类的对象以其自身特定的方式响应相同的方 法调用。
Python 作为一门面向对象的语言,允许你利用这些原则来构建强大且结构良好的应用程序。即使像字符串和整数这样的内置类型在 Python 中也是对象。
Python 类和对象:OOP 的基石
类充当创建对象的蓝图。它定义了该类对象将拥有的属性(数据)和方法(行为)。对象是类的实例——蓝图的具体实现。
让我们用一个简单的例子来说明:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
print("Woof!")
my_dog = Dog("Buddy", "Golden Retriever")
print(my_dog.name) # 访问“name”属性
my_dog.bark() # 调用“bark”方法
构造函数:初始化你的对象
__init__
方法,也称为构造函数,是一个在创建新对象时自动调用的特殊方法。它用于使用初始值初始化对象的属性。
class Cat:
def __init__(self, name="Whiskers", color="Grey", age=2):
self.name = name
self.color = color
self.age = age
def meow(self):
print("Meow!")
my_cat = Cat() # 使用默认值
print(my_cat.name, my_cat.color, my_cat.age)
another_cat = Cat("Mittens", "Orange", 5) # 覆盖默认值
print(another_cat.name, another_cat.color, another_cat.age)
管理类属性:添加、访问和删除
你可以在对象创建后添加、访问和删除对象的属性。
my_dog = Dog("Buddy", "Golden Retriever")
print(my_dog.name) # 输出:Buddy
my_dog.age = 3 # 添加新属性
print(my_dog.age) # 输出:3
del my_dog.breed # 删除属性
#print(my_dog.breed) # 这将引发 AttributeError
print(hasattr(my_dog, 'breed')) # 输出:False - 检查属性是否存在。
综合示例:宠物类
让我们创建一个更复杂的示例来演示继承和多态性:
class Pet:
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("Generic pet sound")
class Dog(Pet):
def speak(self):
print("Woof!")
class Cat(Pet):
def speak(self):
print("Meow!")
my_dog = Dog("Fido", 5)
my_cat = Cat("Whiskers", 2)
my_dog.speak() # 输出:Woof!
my_cat.speak() # 输出:Meow!
此示例显示了继承如何允许你从更通用的类(Pet)创建专门的类(Dog,Cat),以及多态性如何允许它们对相同的方法(speak
)做出不同的响应。