Skip to content
编程开物
编程开物

一段代码,一段Prompt,一物成型。 探索编程、AI应用、架构设计与产品设计,分享工程实践,记录技术学习、工作总结与产品创造。

  • 首页
  • 编程基础
  • 数据与AI
    • 数据工程
    • AI基础理论
    • AI实践应用
  • 系统架构
    • 传统应用架构设计
    • AI应用架构设计
  • 项目管理
  • 产品设计
  • 技术教程
  • 行业动态
  • 编程笔记
  • 实用技巧
  • 关于我
编程开物

一段代码,一段Prompt,一物成型。 探索编程、AI应用、架构设计与产品设计,分享工程实践,记录技术学习、工作总结与产品创造。

《Python编程》013 – Python面向对象编程:类、对象、属性、方法、继承和多态的基础知识

编码者, 2023年8月8日2023年8月8日

Python 是一种功能强大的编程语言,支持面向对象编程(Object-Oriented Programming,OOP)的范式。面向对象编程允许你将代码组织成可重用和模块化的部分。在 Python 中,你可以使用类(Class)、对象(Object)和方法(Method)来实现面向对象编程的概念。

1. 类(Classes)

在 Python 中,类是创建对象的蓝图。它定义了对象将具有的一组属性和方法。要在 Python 中定义一个类,你可以使用 class 关键字,后面跟着类的名称和冒号。例如:

class Car:
    pass

上面的示例创建了一个名为 “Car” 的类,该类没有属性或方法。通过这个类,你可以创建对象(实例)。

2. 对象(Objects)

对象是类的实例。在 Python 中创建对象很简单,只需调用类,就像调用函数一样。例如,如果有一个名为 “Car” 的类,你可以像这样创建一个该类的对象:

my_car = Car()

这样就创建了一个 “Car” 类的对象,并将其赋值给变量 my_car。

3. 属性(Attributes)

属性是与对象关联的数据。在 Python 类中,你可以通过在类内部创建变量来定义属性。使用点表示法可以访问对象的属性。例如:

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

my_car = Car('Toyota', 'Camry', 2022)
print(my_car.make)

在上面的示例中,”Car” 类有三个属性:make、model 和 year。我们还定义了一个构造方法 __init__,用于在创建对象时设置这些属性。最后,我们创建了一个 “Car” 类的对象,并将其赋值给变量 my_car,然后打印出它的 make 属性。

4. 方法(Methods)

方法是与对象关联的函数。在 Python 类中,你可以通过在类内部创建函数来定义方法。使用点表示法可以调用对象的方法。例如:

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def start(self):
        print(f"The {self.make} {self.model} is starting.")

my_car = Car('Toyota', 'Camry', 2022)
my_car.start()

在上面的示例中,”Car” 类有一个名为 start 的方法,用于在调用时打印一条消息。我们还创建了一个 “Car” 类的对象,并将其赋值给变量 my_car,然后调用了它的 start 方法。

5. 继承(Inheritance)

继承是面向对象编程中的一种机制,它允许你基于现有类创建一个新类,继承其属性和方法。新类称为子类(Subclass),现有类称为父类(Superclass)。在 Python 中,你可以通过使用 class 关键字,后面跟着子类的名称和父类的名称(括在括号中)来定义子类。例如:

class ElectricCar(Car):
    def __init__(self, make, model, year, battery_size):
        super().__init__(make, model, year)
        self.battery_size = battery_size

    def charge(self):
        print(f"The {self.make} {self.model} is charging.")

my_electric_car = ElectricCar('Tesla', 'Model S', 2022, 100)
my_electric_car.charge()

在上面的示例中,我们定义了一个名为 “ElectricCar” 的子类,它是 “Car” 类的子类。”ElectricCar” 类有一个额外的属性 battery_size 和一个新方法 charge。我们还创建了一个 “ElectricCar” 类的对象,并将其赋值给变量 my_electric_car,然后调用了它的 charge 方法。

6. 多态(Polymorphism)

多态是面向对象编程中的一个重要概念,它允许你使用父类或接口类型来引用其子类的对象,并在运行时根据实际对象的类型来执行相应的方法。这样可以编写通用的代码,可以处理不同类型的对象,只要它们共享相同的接口或父类。

在 Python 中,多态的实现依赖于动态类型检查和动态绑定的特性。动态类型检查意味着在运行时确定对象的类型,而不是在编译时。动态绑定允许在运行时根据对象的类型选择调用适当的方法。

让我们通过一个示例来说明多态的概念。假设我们有一个父类 Animal,以及两个子类 Dog 和 Cat,它们都继承自父类 Animal。这些子类都实现了一个名为 make_sound 的方法。

class Animal:
    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        print("Woof!")

class Cat(Animal):
    def make_sound(self):
        print("Meow!")

现在我们可以创建 Dog 和 Cat 的实例,并使用父类 Animal 的引用来调用它们的 make_sound 方法。

dog = Dog()
cat = Cat()

animal_list = [dog, cat]

for animal in animal_list:
    animal.make_sound()

在上面的示例中,我们创建了一个包含 Dog 和 Cat 实例的列表 animal_list。然后,我们使用 for 循环遍历列表中的每个元素,并调用它们的 make_sound 方法。由于动态绑定的特性,每个对象的实际类型被确定,并且相应的 make_sound 方法被调用。

输出结果将是:

Woof!
Meow!

正如你可以看到的,无论是 Dog 还是 Cat,它们都是通过父类 Animal 的引用来调用方法的。这就是多态的体现,同样的方法名字 make_sound 被不同的类型的对象调用,但是根据对象的实际类型,执行的具体方法是不同的。

多态性使得我们可以编写出更灵活和可扩展的代码。通过定义通用的接口或父类,我们可以编写适用于多个子类的代码。这种灵活性允许我们以更加模块化和可复用的方式设计和组织我们的程序。

Post Views: 1,338
编程笔记 Python面向对象

文章导航

Previous post
Next post

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

站内搜索

微信公众号

广告赞助

近期文章

  • 斯坦福 STORM 学习法:用 AI 深度研究一个主题,构建自己的知识体系
  • 如何使用 Claude 将任何知识的学习速度提升 10 倍【译】
  • Excel 根据数值正负自动设置文字颜色:正数红色、负数绿色
  • 2026 年主流跨端开发框架:Flutter、React Native、KMP 怎么选?
  • 2026 年企业级编程技术栈趋势简报
  • 使用 Jev 构建 Harness [译]
  • 2026年FDE(前沿部署工程师)为什么成了香饽饽?
  • 第 7 章 Tool System:给 AI 装上”手和脚”
  • 第 6 章 Context Engineering:Agent 的”工作内存”
  • 第 5 章 主流 AI Agent 架构模式

近期评论

  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 3 章 AI Agent Loop:现代 AI Agent 背后的核心架构》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 4 章 Agent Harness是什么?》
  • 第 4 章 Agent Harness是什么? - 编程开物 发表在《《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 2 章 LLM Application 的基本架构》
  • 《AI Agent 架构设计与工程实践指南》——从 LLM、Agent、Harness 到 Mini Claude Code - 编程开物 发表在《第 1 章 重新认识 AI Agent》

归档

  • 2026 年 10 月 (2)
  • 2026 年 9 月 (14)
  • 2025 年 8 月 (1)
  • 2025 年 7 月 (1)
  • 2025 年 6 月 (10)
  • 2025 年 5 月 (10)
  • 2025 年 4 月 (5)
  • 2025 年 2 月 (1)
  • 2024 年 12 月 (4)
  • 2024 年 11 月 (7)
  • 2024 年 9 月 (1)
  • 2024 年 8 月 (4)
  • 2024 年 7 月 (1)
  • 2024 年 2 月 (1)
  • 2023 年 12 月 (3)
  • 2023 年 11 月 (6)
  • 2023 年 10 月 (4)
  • 2023 年 9 月 (2)
  • 2023 年 8 月 (38)
  • 2022 年 2 月 (1)
  • 2022 年 1 月 (13)
  • 2021 年 1 月 (1)
  • 2020 年 10 月 (1)
  • 2020 年 1 月 (1)
  • 2014 年 7 月 (2)

分类

  • IT项目管理 (2)
  • 实用技巧 (3)
  • 技术教程 (8)
  • 数据与AI (12)
    • AI基础理论 (1)
    • AI实践应用 (2)
    • 数据工程 (3)
  • 架构设计 (13)
    • AI应用架构设计 (8)
    • 传统应用架构设计 (2)
  • 编程基础 (2)
  • 编程笔记 (88)
  • 行业动态 (19)
©2026 编程开物 | WordPress Theme by SuperbThemes | 沪ICP备17019044号-3