Python进阶教程:面向对象编程(OOP)

Python进阶教程:面向对象编程(OOP)

@

目录
  • Python进阶教程:面向对象编程(OOP)
    • 一、什么是面向对象编程
    • 二、类与对象
      • 2.1 定义类
      • 2.2 self 是什么
    • 三、封装
    • 四、继承
    • 五、多态
    • 六、类属性与类方法
    • 七、魔法方法
    • 八、实战:图书管理系统
    • 总结

Python进阶教程:面向对象编程(OOP)

本文是 Python 入门教程系列 的第 2 篇。上一篇介绍了 Python 的基础语法(变量、条件、循环、函数),本篇深入讲解面向对象编程

一、什么是面向对象编程

面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程思想,它把数据和对数据的操作封装成对象。与面向过程相比,OOP 更适合大型项目:

  • 可复用:类可以多次实例化
  • 易维护:代码结构清晰
  • 可扩展:通过继承轻松扩展功能

OOP 三大特性:封装、继承、多态

二、类与对象

2.1 定义类

用 class 关键字定义类,用类创建对象:

class Dog:def __init__(self, name, age):self.name = nameself.age = agedef bark(self):print(f"{self.name} 汪汪叫!")def info(self):print(f"{self.name}今年{self.age}岁")dog1 = Dog("旺财", 3)
dog1.bark()
dog1.info()

2.2 self 是什么

self 代表当前实例,所有实例方法第一个参数必须是 self,用于访问实例属性和其他方法。

三、封装

封装将内部细节隐藏,通过方法对外提供接口。Python 用命名约定实现私有:

class BankAccount:def __init__(self, owner, balance=0):self.owner = ownerself.__balance = balancedef deposit(self, amount):if amount > 0:self.__balance += amountprint(f"存入{amount}元,余额{self.__balance}元")def withdraw(self, amount):if 0 < amount <= self.__balance:self.__balance -= amountprint(f"取出{amount}元,余额{self.__balance}元")else:print("余额不足!")def get_balance(self):return self.__balanceacc = BankAccount("小明", 1000)
acc.deposit(500)
acc.withdraw(200)

四、继承

子类继承父类的属性和方法,并可扩展或重写:

class Animal:def __init__(self, name):self.name = namedef speak(self):print("动物叫")class Cat(Animal):def speak(self):print(f"{self.name} 喵喵叫!")class Dog(Animal):def speak(self):print(f"{self.name} 汪汪叫!")animals = [Cat("咪咪"), Dog("旺财")]
for a in animals:a.speak()

五、多态

多态指同一操作作用于不同对象产生不同结果。上面的例子中,speak() 对猫和狗有不同的表现,这就是多态。

六、类属性与类方法

class Student:school = "第一中学"def __init__(self, name):self.name = name@classmethoddef get_school(cls):return cls.school@staticmethoddef hello():print("这是静态方法")s1 = Student("张三")
s2 = Student("李四")
print(s1.school, s2.school)
print(Student.get_school())

七、魔法方法

Python 中以双下划线开头和结尾的方法是魔法方法,如 initstrlen

class Book:def __init__(self, title, pages):self.title = titleself.pages = pagesdef __str__(self):return f"《{self.title}》共{self.pages}页"def __len__(self):return self.pagesb = Book("Python编程", 300)
print(b)
print(len(b))

八、实战:图书管理系统

综合运用所学知识,实现一个简单的图书管理:

class Book:def __init__(self, title, author):self.title = titleself.author = authorself.borrowed = Falsedef __str__(self):status = "已借出" if self.borrowed else "可借"return f"《{self.title}》- {self.author} [{status}]"class Library:def __init__(self):self.books = []def add_book(self, book):self.books.append(book)print(f"添加成功:{book}")def borrow(self, title):for book in self.books:if book.title == title and not book.borrowed:book.borrowed = Trueprint(f"借出成功:{book}")returnprint(f"《{title}》不可借")def show_all(self):for book in self.books:print(book)lib = Library()
lib.add_book(Book("Python入门", "张三"))
lib.add_book(Book("算法导论", "李四"))
lib.borrow("Python入门")
lib.show_all()

总结

本篇讲解了 OOP 的三大特性(封装、继承、多态)以及类属性、魔法方法等进阶知识,并用图书管理系统串起全部知识点。下一篇将介绍文件操作与异常处理,敬请关注!