像 LEGO 吗?爱 Python!🧱🐍

发布: (2026年2月7日 GMT+8 21:20)
5 分钟阅读
原文: Dev.to

Source: Dev.to

Source:

第 1 集:构建你的第一个砖块(定义类)

还记得你小时候拿到第一套 LEGO 时候的情景吗?那种纯粹的可能性,盯着一堆五颜六色的砖块,说明书上那看似简单的第 1 步在嘲笑你?
好,现在系好安全带,因为 Python 类基本上就是你自己编写的 LEGO 说明书。只不过你不是把小零件丢在地毯里,而是把它们丢进代码库。进步!

在 LEGO 的世界里,企业总部的某个人设计每种砖块的模具。一个 2×4 的红色砖块不仅仅是一块砖——它是成千上万块完全相同的 2×4 红色砖块中的一块,全部来源于同一套母版设计。Python 类的工作方式完全相同(只是不具备丹麦工程的精确度):

class LegoBrick:
    """Our master blueprint for LEGO bricks"""
    pass

恭喜!你刚刚设计了……毫无用处的东西。这相当于 LEGO 中的光滑 1×1 瓦——技术上是砖块,实际上对建造任何有趣的东西毫无帮助。

真正的 LEGO 砖块有属性:颜色、尺寸、以及顶部那令人满意的小凸点。 在 Python 中,我们把这些称为 属性,并在一个特殊的方法 __init__() 中定义它们——读作 “dunder init”。

class LegoBrick:
    def __init__(self, color, length, width):
        self.color = color
        self.length = length
        self.width = width
        self.studs = length * width  # 自动计算凸点数量!

这里发生了什么?

  • self 是 Python 用来表示 “我们现在正在构建的这块特定砖块” 的方式(稍后会详细说明)。
  • 我们为每块砖块赋予颜色、尺寸,并计算它的凸点数量。
  • 当我们创建新砖块时(就像工厂里的注塑),__init__() 方法会自动运行。

现在有趣的部分来了——让我们制造一些真实的砖块:

my_red_brick = LegoBrick("red", 2, 4)
my_blue_brick = LegoBrick("blue", 2, 2)
my_weird_green_brick = LegoBrick("green", 1, 8)  # 那块没人会用的奇怪砖

这些都是我们 LegoBrick 类的 实例——从蓝图中冲压出来的真实、具体的砖块。它们共享相同的结构(colorlengthwidthstuds),但拥有不同的取值。

Source:

self 揭示

当 Python 执行 my_red_brick = LegoBrick("red", 2, 4) 时,它:

  1. 创建一个全新的、空白的砖块对象。
  2. 自动将该砖块作为 self 传递给 __init__()

你只需要提供其他参数(colorlengthwidth)。因此 self 从砖块的视角来看,字面意思就是“你自己”。可以想象每块砖都有一个小小的内部独白:“我是红色的,我长 2 个单位,我宽 4 个单位……”。

乐高砖块并不是只会静静地站在那里(好吧,大多数情况下是,但请配合我的比喻)。它们可以做事——比如相互卡合。我们来给它们添加一些行为:

class LegoBrick:
    def __init__(self, color, length, width):
        self.color = color
        self.length = length
        self.width = width
        self.studs = length * width

    def describe(self):
        return f"A {self.color} {self.length}x{self.width} brick with {self.studs} studs"

    def can_connect_to(self, other_brick):
        # Simplified logic: bricks can connect if dimensions match
        return (self.length == other_brick.width or 
                self.width == other_brick.length)

试一试

red_brick = LegoBrick("red", 2, 4)
print(red_brick.describe())
# Output: "A red 2x4 brick with 8 studs"

blue_brick = LegoBrick("blue", 4, 2)
print(red_brick.can_connect_to(blue_brick))
# Output: True - they can snap together!

类是蓝图。实例是你根据这些蓝图实际构建的乐高砖块。方法是砖块能够执行的操作。属性是砖块对自身的认知。

🎯 关键要点

  • class 关键字创建蓝图(就像乐高模具设计)。
  • __init__() 在创建新实例时运行(制造过程)。
  • self 指代正在创建或使用的特定实例。
  • 属性 是特征(例如 colorsize),以 self.attribute_name 形式存储。
  • 方法 是行为(属于类的函数)。
  • 实例 是从类蓝图创建的实际对象。

有问题或在乐高比喻中发现错误?在下方留言!如果你喜欢本系列,点个 ❤️——这就像踩到乐高,但却是好事。

0 浏览
Back to Blog

相关文章

阅读更多 »

Python 运算和函数

表达式 Expression - 操作数和运算符的组合 操作数 Operand: 运算的对象 运算符 Operator: 表示某种运算的符号,例如:+, -, *, / 如果用编程语言编写以精确表达式表示的运算,计算机就会精确计算。 运算优先级 - 小括号 () …