Python全栈之面向对象基础
Python作为一门高级语言,自然离不开面向对象编程的支持。本篇文章将为大家介绍Python面向对象编程的基础概念和应用,包括类、对象、继承、多态等内容。
面向对象基础概念
类和对象
类是抽象的概念,它定义了一类对象的共同属性和方法。而对象则是具体的实例化后的个体,每个对象都拥有其独特的属性和方法。比如我们可以用一个“Person”类来描述所有人的共性,然后通过实例化该类来创建不同的人的对象,每个人都有自己的姓名、年龄等特征。下面是一个示例代码:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print(f"Hello, my name is {self.name}, I'm {self.age} years old.")
p1 = Person("Tom", 18)
p2 = Person("Lucy", 20)
p1.say_hello() # 输出 "Hello, my name is Tom, I'm 18 years old."
p2.say_hello() # 输出 "Hello, my name is Lucy, I'm 20 years old."
属性和方法
类和对象都可以定义属性和方法。属性是对象的状态,它描述了对象的某些特征。方法是对象的行为,它实现了对象的某些功能。
在Python中,属性和方法都可以通过“点运算符”来访问。示例如下:
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print("woof!")
d = Dog("旺财")
print(d.name) # 输出 "旺财"
d.bark() # 输出 "woof!"
封装、继承和多态
面向对象编程的三个基本特性是封装、继承和多态。
封装是指隐藏对象的属性和实现细节,仅对外暴露接口,确保对象的安全性和可靠性。
继承是指一个子类可以继承父类的属性和方法,也可以重写父类的方法或者添加自己的方法。
多态是指同一个方法可以在不同的对象上呈现出不同的行为和结果。它有两种形式:重载和覆盖。重载是指方法名相同,但参数个数或类型不同;覆盖是指子类重新定义了父类的方法。
下面是一个继承和多态的示例代码:
class Animal:
def __init__(self, name):
self.name = name
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
print("woof!")
class Cat(Animal):
def make_sound(self):
print("meow!")
def animal_speak(animal):
animal.make_sound()
a1 = Dog("旺财")
a2 = Cat("小白")
animal_speak(a1) # 输出 "woof!"
animal_speak(a2) # 输出 "meow!"
实战篇:使用面向对象编程实现一个简单的图书馆管理系统
首先我们需要定义几个类:
图书类 Book
属性:
- book_id: 书籍ID
- book_name: 书籍名称
- book_author: 书籍作者
方法:
- show_info: 显示书籍信息
class Book:
def __init__(self, book_id, book_name, book_author):
self.book_id = book_id
self.book_name = book_name
self.book_author = book_author
def show_info(self):
print(f"【{self.book_id}】{self.book_name} - {self.book_author}")
读者类 Reader
属性:
- reader_id: 读者ID
- reader_name: 读者姓名
- borrowed_books: 已借阅书籍列表
方法:
- borrow_book: 借阅书籍
- return_book: 归还书籍
- show_borrowed_books: 显示已借阅的书籍列表
class Reader:
def __init__(self, reader_id, reader_name):
self.reader_id = reader_id
self.reader_name = reader_name
self.borrowed_books = []
def borrow_book(self, book):
self.borrowed_books.append(book)
print(f"读者 {self.reader_name} 借阅了书籍【{book.book_name}】")
def return_book(self, book):
if book in self.borrowed_books:
self.borrowed_books.remove(book)
print(f"读者 {self.reader_name} 归还了书籍【{book.book_name}】")
else:
print(f"读者 {self.reader_name} 没有借阅这本书")
def show_borrowed_books(self):
print(f"读者 {self.reader_name} 已借阅的书籍列表:")
for book in self.borrowed_books:
book.show_info()
图书馆类 Library
属性:
- books: 所有书籍列表
- readers: 所有读者列表
方法:
- add_book: 添加新书籍
- remove_book: 删除旧书籍
- add_reader: 添加新读者
- remove_reader: 删除旧读者
- borrow_book: 读者借阅书籍
- return_book: 读者归还书籍
- show_books: 显示所有书籍信息
- show_readers: 显示所有读者信息
class Library:
def __init__(self):
self.books = []
self.readers = []
def add_book(self, book):
self.books.append(book)
print(f"添加书籍【{book.book_name}】成功")
def remove_book(self, book):
if book in self.books:
self.books.remove(book)
print(f"删除书籍【{book.book_name}】成功")
else:
print(f"书籍【{book.book_name}】不存在")
def add_reader(self, reader):
self.readers.append(reader)
print(f"添加读者【{reader.reader_name}】成功")
def remove_reader(self, reader):
if reader in self.readers:
self.readers.remove(reader)
print(f"删除读者【{reader.reader_name}】成功")
else:
print(f"读者【{reader.reader_name}】不存在")
def borrow_book(self, reader_id, book_id):
reader = self.get_reader(reader_id)
book = self.get_book(book_id)
if reader and book:
reader.borrow_book(book)
else:
print("借阅失败,书籍或读者不存在")
def return_book(self, reader_id, book_id):
reader = self.get_reader(reader_id)
book = self.get_book(book_id)
if reader and book:
reader.return_book(book)
else:
print("归还失败,书籍或读者不存在")
def show_books(self):
print("所有书籍列表:")
for book in self.books:
book.show_info()
def show_readers(self):
print("所有读者列表:")
for reader in self.readers:
print(reader.reader_name)
def get_book(self, book_id):
for book in self.books:
if book.book_id == book_id:
return book
return None
def get_reader(self, reader_id):
for reader in self.readers:
if reader.reader_id == reader_id:
return reader
return None
有了这些类之后,我们就可以编写一个测试脚本来实现图书馆管理系统的基本功能了:
# 创建几本书
book1 = Book(1, "Python基础教程", "Bill Lubanovic")
book2 = Book(2, "流畅的Python", "Luciano Ramalho")
book3 = Book(3, "Python编程精解", "Wesley Chun")
# 创建几个读者
reader1 = Reader(1, "小明")
reader2 = Reader(2, "小红")
reader3 = Reader(3, "小刚")
# 创建图书馆对象
library = Library()
# 添加书籍和读者
library.add_book(book1)
library.add_book(book2)
library.add_book(book3)
library.add_reader(reader1)
library.add_reader(reader2)
library.add_reader(reader3)
# 借阅和归还书籍
library.borrow_book(1, 1)
library.borrow_book(2, 2)
library.borrow_book(1, 2)
library.borrow_book(2, 3)
library.return_book(1, 1)
library.return_book(2, 2)
library.return_book(1, 2)
# 显示所有书籍和读者
library.show_books()
library.show_readers()
以上就是一个简单的图书馆管理系统的代码实现,它具备了添加书籍和读者、借阅和归还书籍、显示书籍和读者信息等基本功能。可以根据实际需求进一步扩展和优化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python全栈之面向对象基础 - Python技术站