当前位置: 首页 > news >正文

通往 AI 之路:Python 机器学习入门-面向对象编程

1.3 面向对象编程(OOP)

面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它通过“类”和“对象”来组织代码,使程序更加模块化、可扩展和可维护。Python 是一种面向对象的编程语言,本章将介绍 Python 中的面向对象编程基础。


1.3.1 类和对象

在 Python 中,一切皆对象。对象是某个类的具体实例,而类是创建对象的模板。

1. 定义类和创建对象

# 定义一个类
class Person:
    def __init__(self, name, age):
        self.name = name  # 实例变量
        self.age = age    # 实例变量

    def introduce(self):
        print(f"我是 {self.name},今年 {self.age} 岁。")

# 创建对象
p1 = Person("Alice", 25)
p2 = Person("Bob", 30)

# 调用方法
p1.introduce()  # 输出: 我是 Alice,今年 25 岁。
p2.introduce()  # 输出: 我是 Bob,今年 30 岁。

在上述代码中:

  • class Person: 定义了一个 Person 类。
  • __init__ 方法是构造方法(初始化方法),在创建对象时自动执行。
  • self 代表实例对象,它用于访问实例变量和方法。

1.3.2 继承与多态

1. 继承(Inheritance)

继承是一种面向对象的特性,允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码复用。

# 定义父类
class Animal:
    def __init__(self, name):
        self.name = name

    def make_sound(self):
        print("动物在发出声音")

# 定义子类,继承 Animal
class Dog(Animal):
    def make_sound(self):
        print(f"{self.name} 汪汪叫")

# 定义另一个子类
class Cat(Animal):
    def make_sound(self):
        print(f"{self.name} 喵喵叫")

# 创建实例
dog = Dog("旺财")
cat = Cat("小黑")

# 调用方法
dog.make_sound()  # 输出: 旺财 汪汪叫
cat.make_sound()  # 输出: 小黑 喵喵叫

在上述代码中:

  • DogCat 继承 Animal,但重写了 make_sound() 方法。
  • 这样,子类可以拥有父类的特性,同时可以自定义自己的行为。

2. 多态(Polymorphism)

多态是指同一方法在不同类的对象上表现出不同的行为。

def animal_sound(animal):
    animal.make_sound()

animals = [Dog("旺财"), Cat("小黑")]

for animal in animals:
    animal_sound(animal)

输出:

旺财 汪汪叫
小黑 喵喵叫

在这里,animal_sound(animal) 能够接受不同的 Animal 子类对象,并调用它们的 make_sound() 方法。这种方式使代码更加灵活。


1.3.3 魔法方法(Magic Methods)

Python 提供了一些特殊的方法(又称魔法方法),以 __(双下划线)开头和结尾。这些方法可以让类对象实现特定的行为。

1. __init__ 方法(构造方法)

__init__ 是对象初始化时自动调用的方法。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person("Alice", 25)
print(p.name)  # 输出: Alice

2. __str__ 方法(字符串表示)

__str__ 方法用于定义对象的字符串表示,print 对象时会调用它。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"姓名: {self.name}, 年龄: {self.age}"

p = Person("Alice", 25)
print(p)  # 输出: 姓名: Alice, 年龄: 25

3. __call__ 方法(使对象变成可调用)

__call__ 方法允许对象像函数一样被调用。

class Counter:
    def __init__(self):
        self.count = 0

    def __call__(self):
        self.count += 1
        print(f"当前计数: {self.count}")

counter = Counter()
counter()  # 输出: 当前计数: 1
counter()  # 输出: 当前计数: 2

在这里,Counter 类的实例 counter 变成了一个可调用对象,像函数一样使用 counter()


1.3.4 总结

本章介绍了 Python 的面向对象编程,包括:

  1. 类和对象:通过 class 关键字定义类,并使用 self 访问实例变量和方法。
  2. 继承与多态:子类可以继承父类,并通过方法重写实现多态。
  3. 魔法方法
    • __init__ 用于初始化对象;
    • __str__ 定义对象的字符串表示;
    • __call__ 使对象变得可调用。

面向对象编程使代码更结构化、易维护,掌握这些概念将为后续的机器学习编程打下坚实的基础。💡

相关文章:

  • 数据库拓展操作
  • 阿里云 Qwen2.5-Max:超大规模 MoE 模型架构和性能评估
  • 大白话面试遇难题,应对策略是什么?
  • 微信小程序开发学习笔记
  • 知识库技术选型:主流Embedding模型特性对比
  • 阿里云ECS Ubuntu PPTP VPN无法访问以太网
  • 使用SPI总线与外部传感器通信,使用ECU抽象
  • 【Git】Ubuntu 安装 Git Large File Storage(LFS)以及使用 Git LFS 下载
  • 上位机知识篇---Linux\Windows操作系统下获取逻辑处理器数
  • Grok 3 AI 角色扮演提示词 化身顶级设计师
  • 【AD】4-2 利用IPC封装创建向导快速创建PCB封装-SOP8
  • 进程间通信(IPC)与匿名管道
  • Java容器异常分析与恢复实战指南
  • 20250302小米13ultra删除照片后没有在回收站
  • OpenHarmony4.1-轻量与小型系统ubuntu开发环境
  • [原创](Modern C++)现代C++的关键性概念: 利用元素序列生成器(std::views::istream)提取字段
  • vulnhub靶场之【digitalworld.local系列】的bravery靶机
  • git命令学习记录
  • 第一章:5.前缀和
  • 基于大模型的脂肪栓塞综合征风险预测与综合治疗方案研究报告
  • 米客优品的网站是哪做的/软文推广文章案例
  • 西安网站建设罗鑫/核酸检测最新消息
  • 南昌做网站kaiu/陕西网页设计
  • 网站开发应该学哪门语言/手机系统优化软件
  • 网络推广营销策划/山东网站seo
  • 济南电商网站开发/广州seo培训