4. Python 面向对象编程
类与对象
面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它使用“对象”来设计软件。Python 是一种支持面向对象编程的语言,通过类和对象,开发者可以更好地组织和管理代码。
1. 类与对象的基本概念
- 类(Class):类是对象的蓝图或模板,它定义了对象的属性和方法。类是一个抽象的概念,描述了具有相同属性和行为的一组对象。
- 对象(Object):对象是类的实例。通过类创建的对象具有类定义的属性和方法。对象是具体的实体,可以执行类中定义的操作。
2. 定义类
在 Python 中,使用 class 关键字来定义一个类。类名通常采用驼峰命名法(CamelCase)。
class Dog:
# 类属性
species = "Canis familiaris"
# 初始化方法(构造函数)
def __init__(self, name, age):
# 实例属性
self.name = name
self.age = age
# 实例方法
def bark(self):
return f"{self.name} says woof!"
- 类属性:类属性是所有实例共享的属性。例如,
species是所有Dog实例共享的属性。 - 实例属性:实例属性是每个对象独有的属性。例如,
name和age是每个Dog实例独有的属性。 - 实例方法:实例方法是定义在类中的函数,用于操作实例属性。例如,
bark方法用于让狗叫。
3. 创建对象
通过类创建对象的过程称为实例化。使用类名加括号的方式可以创建一个对象。
# 创建 Dog 类的实例
my_dog = Dog("Buddy", 5)
# 访问实例属性
print(my_dog.name) # 输出: Buddy
print(my_dog.age) # 输出: 5
# 调用实例方法
print(my_dog.bark()) # 输出: Buddy says woof!
4. 类的继承
继承是面向对象编程的一个重要特性,它允许一个类继承另一个类的属性和方法。通过继承,子类可以复用父类的代码,并可以扩展或修改父类的行为。
class Bulldog(Dog):
# 重写父类的方法
def bark(self):
return f"{self.name} says woof! (but louder)"
# 创建 Bulldog 类的实例
bulldog = Bulldog("Max", 3)
print(bulldog.bark()) # 输出: Max says woof! (but louder)
- 父类(基类):被继承的类称为父类或基类。例如,
Dog是Bulldog的父类。 - 子类(派生类):继承父类的类称为子类或派生类。例如,
Bulldog是Dog的子类。
5. 类的特殊方法
Python 提供了一些特殊方法(也称为魔术方法),用于定义类的行为。这些方法以双下划线 __ 开头和结尾。
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
# 重写 __str__ 方法
def __str__(self):
return f"{self.name} is {self.age} years old."
# 创建 Dog 类的实例
my_dog = Dog("Buddy", 5)
print(my_dog) # 输出: Buddy is 5 years old.
__init__:初始化方法,用于创建对象时初始化实例属性。__str__:返回对象的字符串表示,通常用于打印对象。
6. 类的封装
封装是面向对象编程的另一个重要特性,它隐藏了对象的内部实现细节,只暴露必要的接口。通过封装,可以提高代码的安全性和可维护性。
class Dog:
def __init__(self, name, age):
self.name = name
self.__age = age # 私有属性
def get_age(self):
return self.__age
def set_age(self, age):
if age > 0:
self.__age = age
# 创建 Dog 类的实例
my_dog = Dog("Buddy", 5)
# 访问私有属性
print(my_dog.get_age()) # 输出: 5
# 修改私有属性
my_dog.set_age(6)
print(my_dog.get_age()) # 输出: 6
- 私有属性:以双下划线
__开头的属性是私有属性,只能在类内部访问。 - 公有方法:通过公有方法(如
get_age和set_age)可以访问和修改私有属性。
7. 总结
类与对象是面向对象编程的核心概念。通过类,可以定义对象的属性和方法;通过对象,可以操作这些属性和方法。Python 提供了丰富的语法和特性来支持面向对象编程,包括继承、封装、特殊方法等。掌握这些概念和技巧,可以帮助开发者编写更加模块化、可复用和可维护的代码。
