Python进阶教程:面向对象编程(OOP)
本文摘要
面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程思想,它把数据和对数据的操作封装成对象…
目录
本文是 Python 入门教程系列 的第 2 篇。上一篇介绍了 Python 的基础语法(变量、条件、循环、函数),本篇深入讲解面向对象编程。
一、什么是面向对象编程
面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程思想,它把数据和对数据的操作封装成对象。与面向过程相比,OOP 更适合大型项目:
- 可复用:类可以多次实例化
- 易维护:代码结构清晰
- 可扩展:通过继承轻松扩展功能
OOP 三大特性:封装、继承、多态。
二、类与对象
2.1 定义类
用 class 关键字定义类,用类创建对象:
class Dog: def __init__(self, name, age): self.name = name self.age = age
def 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 = owner self.__balance = balance
def deposit(self, amount): if amount > 0: self.__balance += amount print(f"存入{amount}元,余额{self.__balance}元")
def withdraw(self, amount): if 0 < amount <= self.__balance: self.__balance -= amount print(f"取出{amount}元,余额{self.__balance}元") else: print("余额不足!")
def get_balance(self): return self.__balance
acc = BankAccount("小明", 1000)acc.deposit(500)acc.withdraw(200)四、继承
子类继承父类的属性和方法,并可扩展或重写:
class Animal: def __init__(self, name): self.name = name
def 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
@classmethod def get_school(cls): return cls.school
@staticmethod def hello(): print("这是静态方法")
s1 = Student("张三")s2 = Student("李四")print(s1.school, s2.school)print(Student.get_school())七、魔法方法
Python 中以双下划线开头和结尾的方法是魔法方法,如 init、str、len:
class Book: def __init__(self, title, pages): self.title = title self.pages = pages
def __str__(self): return f"《{self.title}》共{self.pages}页"
def __len__(self): return self.pages
b = Book("Python编程", 300)print(b)print(len(b))八、实战:图书管理系统
综合运用所学知识,实现一个简单的图书管理:
class Book: def __init__(self, title, author): self.title = title self.author = author self.borrowed = False
def __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 = True print(f"借出成功:{book}") return print(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 的三大特性(封装、继承、多态)以及类属性、魔法方法等进阶知识,并用图书管理系统串起全部知识点。下一篇将介绍文件操作与异常处理,敬请关注!
Python进阶教程:面向对象编程(OOP)
作者:Wang Shijie
本文链接:https://wsj-blog.pages.dev/posts/python-jin-jie-jiao-cheng-mian-xiang-dui-xiang-bian-cheng/
本文采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
留言评论
评论资源加载失败,请重试。