探索【Python面向对象】编程:新时代的高级编程范式详解
目录
1. 面向对象编程概念(OOP)
1.1 什么是类和对象?
1.2 类的定义
1.3 类和对象的关系
1.4 小李的理解
2. 抽象
2.1 抽象的概念
2.2 抽象类和方法
2.3 小李的理解
3. 类和实例
3.1 类的定义和实例化
3.2 类的属性和方法
3.3 小李的理解
4. 封装/接口
4.1 封装的概念
4.2 接口的概念
4.3 小李的理解
5. 继承
5.1 继承的概念
5.2 方法重写
5.3 小李的理解
6. 多态
6.1 多态的概念
6.2 实现多态
6.3 小李的理解
7. 自省/反射
7.1 自省的概念
7.2 使用自省进行动态操作
7.3 小李的理解
8. 静态方法和类方法
8.1 静态方法
8.2 类方法
总结
专栏:python学习笔记
上一卷:Python模块化与包管理
1. 面向对象编程概念(OOP)
面向对象编程(OOP) 是一种编程范式,通过将程序组织成对象的集合来实现。对象不仅包含数据,还包含操作这些数据的方法。OOP的核心概念包括类、对象、属性和方法。
1.1 什么是类和对象?
- 类(Class) 是一个模板或蓝图,用来创建对象。类定义了对象的属性和行为。
- 对象(Object) 是类的实例。创建对象就是根据类创建一个具体的实例。
例子:
class Dog: # 类的初始化方法 def __init__(self, name, age): self.name = name # 属性 self.age = age # 属性 # 方法 def bark(self): return f"{self.name} says Woof!" # 创建对象 my_dog = Dog("Rex", 5) print(my_dog.bark())1.2 类的定义
在Python中,类通过 class 关键字定义。类中的函数称为方法,变量称为属性。类的方法通常以 self 作为第一个参数,表示实例本身。
例子:
class Cat: def __init__(self, name): self.name = name def meow(self): return f"{self.name} says Meow!" # 创建对象 my_cat = Cat("Whiskers") print(my_cat.meow())1.3 类和对象的关系
类是对象的模板,定义了对象的结构和行为。而对象是类的实例,每个对象都有独立的属性和方法。
class Person: def __init__(self, name, age): self.name = name self.age = age def greet(self): return f"Hello, my name is {self.name} and I am {self.age} years old." # 创建多个对象 person1 = Person("Alice", 30) person2 = Person("Bob", 25) print(person1.greet()) print(person2.greet())1.4 小李的理解
类就像是制作饼干的模具,它定义了饼干的形状和尺寸。而对象就像是用模具做出的具体饼干,每块饼干可以有不同的口味(属性),但它们的形状和尺寸(结构和行为)都是相同的。
2. 抽象
抽象 是指对现实世界的复杂问题进行简化,通过抓住主要特征而忽略细节。在编程中,抽象帮助我们创建更加简洁和易维护的代码。
2.1 抽象的概念
抽象就是提取对象的主要特征,而忽略不重要的细节。通过抽象,我们可以专注于对象的核心功能,而不被次要特征所干扰。
例子:
class Animal: def __init__(self, name): self.name = name def make_sound(self): pass # 抽象方法,不具体实现 class Dog(Animal): def make_sound(self): return "Woof!" class Cat(Animal): def make_sound(self): return "Meow!" # 创建对象 dog = Dog("Rex") cat = Cat("Whiskers") print(dog.make_sound()) print(cat.make_sound())2.2 抽象类和方法
在Python中,我们可以通过定义抽象类和抽象方法来实现抽象。抽象类不能被实例化,只能被继承。抽象方法在抽象类中定义,但在子类中实现。
例子:
from abc import ABC, abstractmethod class Vehicle(ABC): @abstractmethod def start_engine(self): pass class Car(Vehicle): def start_engine(self): return "Car engine started" class Motorcycle(Vehicle): def start_engine(self): return "Motorcycle engine started" # 创建对象 car = Car() motorcycle = Motorcycle() print(car.start_engine()) print(motorcycle.start_engine())2.3 小李的理解
抽象就像是把一幅复杂的画简化为几何图形。比如,一只具体的猫有很多特征(毛色、大小、年龄等),但我们只关注它会喵喵叫的特点,这就是对猫进行的抽象。
3. 类和实例
类和实例 是OOP的基础。类是模板,实例是具体对象。实例通过类创建,具有类定义的属性和方法。
3.1 类的定义和实例化
定义类并创建实例是OOP的基本操作。类定义了属性和方法,而实例则是类的具体对象。
例子:
class Student: def __init__(self, name, grade): self.name = name self.grade = grade def introduce(self): return f"Hi, I am {self.name} and I am in grade {self.grade}." # 创建实例 student1 = Student("Alice", 10) student2 = Student("Bob", 12) print(student1.introduce()) print(student2.introduce())3.2 类的属性和方法
类的属性是对象的状态,方法是对象的行为。类的属性通过 __init__ 方法初始化,方法在类中定义。
例子:
class Book: def __init__(self, title, author): self.title = title self.author = author def get_info(self): return f"'{self.title}' by {self.author}" # 创建实例 book = Book("1984", "George Orwell") print(book.get_info())3.3 小李的理解
类和实例就像是房子的图纸和实际的房子。图纸(类)定义了房子的结构和功能,而实际的房子(实例)则是根据图纸建造的具体对象。
4. 封装/接口
封装 是将对象的状态(属性)和行为(方法)隐藏在类内部,通过接口(方法)与外界交互。封装提高了代码的安全性和可维护性。
4.1 封装的概念
封装是OOP的核心概念之一,它通过隐藏对象的内部状态,只暴露必要的接口,来保护对象的数据。这样,外部代码不能直接访问或修改对象的内部状态,只能通过对象提供的方法来操作数据。
例子:
class Account: def __init__(self, owner, balance=0): self.owner = owner self.__balance = balance # 私有属性 def deposit(self, amount): if amount > 0: self.__balance += amount else: raise ValueError("Deposit amount must be positive") def withdraw(self, amount): if 0














