当前位置: 首页> 娱乐> 明星 > 独立站域名_清远疫情最新情况_正规的微信推广平台_谷歌 chrome 浏览器

独立站域名_清远疫情最新情况_正规的微信推广平台_谷歌 chrome 浏览器

时间:2025/7/18 13:19:32来源:https://blog.csdn.net/weidl001/article/details/143312055 浏览次数:0次
独立站域名_清远疫情最新情况_正规的微信推广平台_谷歌 chrome 浏览器

目录

面向对象编程:从函数到类(6/10)

介绍

类与对象

定义类与创建对象

类的构造函数与实例变量

类的方法与属性

实例方法与类方法

私有属性与方法

继承与多态

定义子类与继承

封装与信息隐藏

示例:封装银行账户

综合示例:简单图书管理系统

定义书籍类和图书馆类

总结


面向对象编程:从函数到类(6/10)

介绍

面向对象编程(OOP)是一种编程范式,它通过使用类和对象来封装数据和行为,从而提高代码的复用性和模块化。在 Python 中,OOP 是非常强大的工具,适用于构建大型软件系统或复杂应用程序。在本篇文章中,我们将详细介绍 Python 中的面向对象编程,包括类、对象、继承、多态和封装等概念。通过学习这些内容,你将能够编写出更加结构化和可维护的代码。

类与对象

类(Class)是对象的蓝图,用于定义对象的属性和行为。对象(Object)是类的实例,包含类中定义的属性和方法。

定义类与创建对象

在 Python 中,类通过 class 关键字定义,实例化类则会创建一个对象。

# 定义一个简单的类
class Dog:# 类的构造函数,用于初始化对象def __init__(self, name, age):self.name = name  # 属性self.age = age    # 属性# 类的方法def bark(self):print(f"{self.name} 正在汪汪叫!")# 创建类的实例
my_dog = Dog("Buddy", 3)# 访问属性和方法
print(f"我的狗的名字是 {my_dog.name},它 {my_dog.age} 岁。")
my_dog.bark()

输出:

我的狗的名字是 Buddy,它 3 岁。
Buddy 正在汪汪叫!

在上面的示例中,我们定义了一个名为 Dog 的类,类包含两个属性(nameage)和一个方法(bark)。使用类创建了一个实例 my_dog,并调用了它的方法。

类的构造函数与实例变量

构造函数 __init__() 是 Python 中的特殊方法,用于在创建对象时初始化对象的属性。构造函数中使用 self 参数来引用当前对象的实例。

术语描述示例
类(Class)对象的蓝图或模板class Dog:
对象(Object)类的实例,包含类定义的属性和方法my_dog = Dog("Buddy", 3)
构造函数用于初始化对象属性的特殊方法def __init__(self, name, age):
实例变量由构造函数定义,属于特定对象的属性self.name = name

类的方法与属性

实例方法与类方法

  • 实例方法:用于操作实例数据的方法,通常需要通过 self 访问实例属性。

  • 类方法:通过 @classmethod 装饰器定义,接受类本身作为参数,通常用于操作类变量。

class Cat:species = "猫科动物"  # 类属性def __init__(self, name, age):self.name = name  # 实例属性self.age = age# 实例方法def meow(self):print(f"{self.name} 正在喵喵叫!")# 类方法@classmethoddef get_species(cls):return cls.species# 创建实例
my_cat = Cat("Kitty", 2)# 调用实例方法
my_cat.meow()# 调用类方法
print(Cat.get_species())

输出:

Kitty 正在喵喵叫!
猫科动物

私有属性与方法

在 Python 中,通过在属性和方法前加上双下划线(如 __attribute)可以使其成为私有的,无法直接在类外部访问。

class BankAccount:def __init__(self, owner, balance):self.owner = ownerself.__balance = balance  # 私有属性def deposit(self, amount):if amount > 0:self.__balance += amountprint(f"存入 {amount} 元。当前余额: {self.__balance} 元。")else:print("存款金额必须大于 0。")def __calculate_interest(self):  # 私有方法return self.__balance * 0.05# 创建对象
account = BankAccount("Alice", 1000)# 存款
account.deposit(500)# 无法直接访问私有属性和方法
# print(account.__balance)  # 会报错

输出:

存入 500 元。当前余额: 1500 元。

继承与多态

继承(Inheritance)允许我们基于已有的类创建新类,从而实现代码复用和扩展。多态(Polymorphism)则允许我们以统一的方式使用不同类型的对象。

定义子类与继承

我们可以通过在类定义中传递父类作为参数来实现继承。

# 定义一个父类
class Animal:def __init__(self, name):self.name = namedef speak(self):pass  # 父类定义一个空方法,供子类重写# 定义一个子类
class Dog(Animal):def speak(self):print(f"{self.name} 正在汪汪叫!")class Cat(Animal):def speak(self):print(f"{self.name} 正在喵喵叫!")# 创建对象并调用方法
dog = Dog("Buddy")
cat = Cat("Kitty")dog.speak()
cat.speak()

输出:

Buddy 正在汪汪叫!
Kitty 正在喵喵叫!

在上面的代码中,DogCat 类继承自 Animal 类,并重写了 speak() 方法。这就是多态的体现,我们可以使用相同的方法名调用不同的行为。

封装与信息隐藏

封装是将对象的属性和方法隐藏起来,使得外部无法随意修改对象的内部状态。Python 中通过将属性设为私有来实现封装。

示例:封装银行账户

class BankAccount:def __init__(self, owner, balance=0):self.owner = ownerself.__balance = balance  # 私有属性def deposit(self, amount):if amount > 0:self.__balance += amountprint(f"已存入 {amount} 元。当前余额: {self.__balance} 元。")else:print("存款金额必须大于 0。")def withdraw(self, amount):if 0 < amount <= self.__balance:self.__balance -= amountprint(f"已取出 {amount} 元。当前余额: {self.__balance} 元。")else:print("取款金额不合法。")# 创建账户并进行存取款操作
account = BankAccount("Alice", 1000)
account.deposit(500)
account.withdraw(300)
account.withdraw(1500)  # 超过余额,取款失败

输出:

已存入 500 元。当前余额: 1500 元。
已取出 300 元。当前余额: 1200 元。
取款金额不合法。

综合示例:简单图书管理系统

接下来,我们将创建一个简单的图书管理系统,使用类和对象来组织书籍和用户的操作。

定义书籍类和图书馆类

class Book:def __init__(self, title, author):self.title = titleself.author = authorself.is_borrowed = Falsedef __str__(self):status = "已借出" if self.is_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.title}》")def borrow_book(self, title):for book in self.books:if book.title == title and not book.is_borrowed:book.is_borrowed = Trueprint(f"成功借出: 《{title}》")returnprint(f"《{title}》 不可借或不存在。")def return_book(self, title):for book in self.books:if book.title == title and book.is_borrowed:book.is_borrowed = Falseprint(f"成功归还: 《{title}》")returnprint(f"《{title}》 未被借出或不存在。")def display_books(self):for book in self.books:print(book)# 创建图书馆并添加书籍
library = Library()
library.add_book(Book("Python 编程入门", "张三"))
library.add_book(Book("数据结构与算法", "李四"))
library.add_book(Book("人工智能概论", "王五"))# 借出和归还书籍
library.display_books()
library.borrow_book("Python 编程入门")
library.display_books()
library.return_book("Python 编程入门")
library.display_books()

输出:

添加书籍: 《Python 编程入门》
添加书籍: 《数据结构与算法》
添加书籍: 《人工智能概论》
《Python 编程入门》 - 张三 (可借)
《数据结构与算法》 - 李四 (可借)
《人工智能概论》 - 王五 (可借)
成功借出: 《Python 编程入门》
《Python 编程入门》 - 张三 (已借出)
《数据结构与算法》 - 李四 (可借)
《人工智能概论》 - 王五 (可借)
成功归还: 《Python 编程入门》
《Python 编程入门》 - 张三 (可借)
《数据结构与算法》 - 李四 (可借)
《人工智能概论》 - 王五 (可借)

总结

在本篇文章中,我们学习了 Python 中面向对象编程的基础知识,包括类与对象、实例方法与类方法、继承与多态、封装与信息隐藏等内容。通过这些知识,我们可以编写更加模块化、易于维护的代码。最后,我们通过一个简单的图书管理系统综合应用了这些概念。

在下一篇文章中,我们将深入探讨 Python 中的内置库和第三方库,学习如何扩展 Python 的功能,继续提升编程能力。敬请期待!

关键字:独立站域名_清远疫情最新情况_正规的微信推广平台_谷歌 chrome 浏览器

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: