展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > python - class 入门

python - class 入门

Python中类与对象是核心概念。类如同蓝图,定义事物的属性与方法;对象则是根据蓝图创建的具体实例。通过宠物狗、游戏英雄等生动示例,展示了如何定义类、创建对象及调用方法。类将数据与行为封装,是面向对象编程的基础,能有效模拟现实世界实体。

本文目录

    Lesson: Python Classes & Objects

    The Ultimate Blueprint for Everything!


    想学Python,类和对象是绕不开的核心概念。别被那些听起来很“计算机”的术语吓到,其实它的核心思想非常直观,就像我们日常生活中设计和使用东西一样。今天,我们就用最接地气的方式,把它彻底搞懂。

    1. The Concept: Blueprints vs. Objects

    想象一下,你要盖一栋房子。你肯定不会上来就胡乱堆砖头,对吧?你得先有一张设计蓝图。

    python - class 入门

    • 类(Class)就是这张蓝图:它定义了房子应该有什么(比如几扇窗、什么颜色的门、几个房间)。
    • 对象(Object)就是盖好的房子:根据蓝图实际建造出来的实体。你可以用同一张蓝图,盖出100栋颜色、门牌号各不相同的房子!

    所以,类是用来描述“一类事物”的模板,而对象则是根据这个模板创造出来的、活生生的具体实例。


    2. Our First Class: Creating a Pet

    在Python里,我们用class这个关键字来创建蓝图。咱们从一个最熟悉的例子开始:创建一只宠物狗。

    class Dog:
        # 1. 构造函数:如何“诞生”一只狗
        def __init__(self, name, breed, age):
            self.name = name     # 给狗挂上名字标签
            self.breed = breed   # 给狗挂上品种标签
            self.age = age       # 给狗挂上年龄标签
    
        # 2. 方法:狗能做的事情
        def bark(self):
            print(f"{self.name} says: Woof! Woof!")
    
        def celebrate_birthday(self):
            self.age += 1
            print(f"Happy Birthday {self.name}! You are now {self.age} years old.")
    
    # --- 创建真实的对象 ---
    my_dog = Dog("Buddy", "Golden Retriever", 3)
    your_dog = Dog("Lucy", "Poodle", 5)
    
    print(my_dog.name)  # 输出:Buddy
    my_dog.bark()       # 输出:Buddy says: Woof! Woof!
    your_dog.celebrate_birthday() # 输出:Lucy is now 6!
    

    看明白了吗?Dog类就是蓝图,定义了所有狗都有的属性(名字、品种、年龄)和行为(叫、过生日)。而my_dog和your_dog就是根据这个蓝图造出来的两只完全独立、互不干扰的狗。修改Lucy的年龄,Buddy的年龄可不会跟着变。


    3. Game Time: Creating a Hero ️

    类是游戏开发的基石。我们来创建一个RPG游戏里的英雄角色,感受一下它的威力。

    class Hero:
        def __init__(self, name, power):
            self.name = name
            self.power = power
            self.health = 100  # 默认生命值
            self.inventory = [] # 空的背包
    
        def stats(self):
            print(f"Hero: {self.name} | Power: {self.power} | HP: {self.health}")
    
        def take_damage(self, amount):
            self.health -= amount
            print(f"Ouch! {self.name} lost {amount} HP!")
            if self.health <= 0:
                print(f"Game Over! {self.name} has fainted.")
    
        def find_item(self, item):
            self.inventory.append(item)
            print(f"{self.name} found a {item}!")
    
    # 开始游戏!
    player = Hero("SuperZelda", "Lightning Strike")
    player.stats()                # 查看状态
    player.find_item("Golden Sword") # 捡到物品
    player.take_damage(30)         # 受到伤害
    print(f"Inventory now: {player.inventory}")
    

    通过这个例子,你应该能体会到,类让我们能把一个复杂的事物(英雄)及其所有相关数据和操作,打包成一个整洁、可复用的代码单元。想创建100个不同的英雄?易如反掌。


    4. More Examples: Real World Things

    理解了核心,你会发现类无处不在。再来看两个贴近生活的例子。

    Example A: The Minecraft Block

    class Block:
        def __init__(self, material, color):
            self.material = material
            self.color = color
            self.durability = 10  # 耐久度
    
        def mine(self):
            self.durability -= 2
            if self.durability > 0:
                print(f"Mining {self.material}... {self.durability} left.")
            else:
                print(f"The {self.material} block broke!")
    
    dirt = Block("Dirt", "Brown")
    dirt.mine()
    

    Example B: The Smartphone

    class Phone:
        def __init__(self, brand, model):
            self.brand = brand
            self.model = model
            self.battery = 100  # 满电
    
        def watch_youtube(self, minutes):
            drain = minutes * 1  # 假设每分钟耗电1%
            self.battery -= drain
            print(f"Watched YouTube for {minutes} mins. Battery: {self.battery}%")
    
        def charge(self):
            self.battery = 100
            print("Phone is fully charged!")
    
    my_phone = Phone("Apple", "iPhone 15")
    my_phone.watch_youtube(20)
    

    看,无论是游戏方块还是智能手机,我们都能用类来优雅地建模。关键在于,把“是什么”(属性)和“能做什么”(方法)封装在一起。


    5. Quiz & Practice Section

    光看不练假把式。下面有几个小挑战,动手试试,巩固一下。

    Task 1: Spot the Bug!

    下面的代码里有3个错误,你能找出来吗?

    class Cat:
        def __init__(self name):  # 错误1
            name = name          # 错误2
        
        def meow():               # 错误3
            print("Meow!")
    
    my_cat = Cat("Kitty")
    my_cat.meow()
    

    答案:

    1. __init__(self name) 缺少逗号,应为 __init__(self, name)。
    2. name = name 没有使用self,应为 self.name = name。
    3. def meow(): 方法定义缺少self参数,应为 def meow(self):。

    Task 2: Fill in the Blanks

    补全下面的代码,让这辆车能跑起来!

    class Car:
        def __init__(self, brand, color):
            self.brand = brand
            self.color = color   # 填空1
            self.fuel = 100
    
        def drive(self):
            self.fuel -= 10
            print(f"The {self.color} {self.brand} is driving! Fuel: {self.fuel}")
    
    my_car = Car("Tesla", "Red")  # 填空2
    my_car.drive()               # 填空3
    

    Task 3: The "Pokemon" Challenge (Coding Task)

    目标: 创建一个Pokemon类。

    1. 属性: name, type (比如 Fire),和 level (初始等级为1)。
    2. 方法 say_hello(): 打印 "Pika Pika! I am [name]"。
    3. 方法 level_up(): 将level增加1。
    4. 操作: 创建一个名为 "Pikachu" 的宝可梦,让它打招呼,给它升级,然后打印它的新等级。

    Task 4: The "Logic Master" Challenge

    下面的代码会打印出什么?

    class Robot:
        def __init__(self, name):
            self.name = name
    
    r1 = Robot("Robbie")
    r2 = Robot("BeepBoop")
    
    r1.name = "Flash"
    
    print(r1.name)
    print(r2.name)
    

    问题: r2的名字也会变成"Flash"吗?为什么?

    答案: 不会。因为r1和r2是两个独立的对象,修改其中一个的属性,不会影响另一个。这就是对象的独立性。

    Task 5: The "Bank Account" (Final Boss Task)

    编写一个名为BankAccount的类。

    • 它应有owner(户主)和balance(余额)属性。
    • 一个deposit(amount)方法,用于存钱。
    • 一个withdraw(amount)方法,用于取钱,需要检查:
      • 如果余额足够,则扣除相应金额。
      • 如果余额不足,则打印 "No money left!"。

    Quick Cheat Sheet for the Student:

    最后,送你一张速查表,帮你快速回忆核心语法:

    • class Name: -> 类名首字母要大写。
    • def __init__(self, ...): -> 每个对象的“起点”,构造函数。
    • self.variable -> 属于这个对象的变量(属性)。
    • my_object = Name() -> 创建对象(实例化)。
    • my_object.method() -> 让对象执行某个动作(调用方法)。

    掌握了这些,你就已经拿到了面向对象编程世界的入场券。接下来,就是不断练习,用类去构建你自己的数字世界了。加油!

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。