class 扩展

🐍 Lesson: Introduction to Python Classes & Objects

Duration: 90 Minutes | Topic: Object-Oriented Programming (OOP)


Part 1: The "Blueprint" Concept (10 mins)

Goal: Understand why we use classes.

Explanation for Student: Imagine you want to build a house. You don't just start building randomly. You need a Blueprint (a plan).

  • The Class: The Blueprint. It defines what a house has (windows, doors, color).
  • The Object: The actual House. You can use one blueprint to build many houses. Each house can have a different color, but they all follow the same plan.

【笔记】 用乐高(LEGO)做比喻:Class 是说明书,Object 是拼出来的成品。强调:一个 Class 可以创建无数个 Object。


Part 2: Syntax - Our First Class (20 mins)

Goal: Learn class, __init__, and self.

Code Example:

python 复制代码
class Dog:
    # The "Constructor" - This runs when we create a new dog
    def __init__(self, name, breed, age):
        self.name = name    # Attribute
        self.breed = breed  # Attribute
        self.age = age      # Attribute

    # A Method (What the dog can DO)
    def bark(self):
        print(f"{self.name} says: Woof! Woof!")

# --- Creating Objects ---
my_dog = Dog("Buddy", "Golden Retriever", 3)
your_dog = Dog("Lucy", "Poodle", 5)

print(my_dog.name) # Output: Buddy
my_dog.bark()      # Output: Buddy says: Woof! Woof!

Key Concepts for Student:

  1. __init__: The "Starting Point." It sets up the object's information.
  2. self : Refers to "this specific object." When Buddy barks, self.name is Buddy. When Lucy barks, self.name is Lucy.
  3. Attributes: Variables that belong to the object (name, age).
  4. Methods: Functions that belong to the object (bark, run).

【教师笔记】

  • 重点强调 __init__ 是左右各两个下划线。
  • 让学生试着修改 my_dog.age = 4 然后打印输出,展示属性是可以改变的。

Part 3: Interactive Challenge - "Design a Hero" (20 mins)

Goal: Practice creating attributes and basic methods.

Task: Create a class called Hero for an RPG game.

  1. Attributes: name, health (default 100), power.
  2. Method: rest() -> Increases health by 10.
  3. Method: stats() -> Prints the hero's current status.

Solution Template (Don't show the student yet!):

python 复制代码
class Hero:
    def __init__(self, name, power):
        self.name = name
        self.power = power
        self.health = 100

    def rest(self):
        self.health += 10
        print(f"✨ {self.name} is resting. Health is now {self.health}")

    def stats(self):
        print(f"📊 Hero: {self.name} | HP: {self.health} | Power: {self.power}")

# Student should test it:
p1 = Hero("Zelda", 25)
p1.stats()
p1.rest()

【教师笔记】 观察学生是否记得在方法(rest, stats)的括号里写 self。这是新手最容易忘掉的地方。


Part 4: Object Interaction - "The Battle" (20 mins)

Goal: Learn how two objects interact with each other.

Explanation for Student: Objects aren't just isolated. They can interact! We can pass one object into the method of another object.

Code Extension:

python 复制代码
class Hero:
    def __init__(self, name, health, power):
        self.name = name
        self.health = health
        self.power = power

    def attack(self, enemy):
        print(f"⚔️ {self.name} attacks {enemy.name}!")
        enemy.health -= self.power
        print(f"💥 {enemy.name} now has {enemy.health} HP left.")

# Creating two heroes
hero = Hero("Link", 100, 20)
monster = Hero("Ganon", 200, 10)

# Let the interaction happen
hero.attack(monster) 

【笔记】 这是进阶内容。解释 enemy 在这里代表另一个 Hero 对象。这能极大增加课程的趣味性,学生通常很喜欢这种类似游戏的逻辑。


Part 5: Final Boss Task - "The Bank Account" (20 mins)

Goal: Independent coding to consolidate everything.

Instructions for Student: Create a class BankAccount.

  • Attributes: owner (string), balance (number).
  • Method deposit(amount): Adds money to balance.
  • Method withdraw(amount) :
    • If balance is enough: Subtract money.
    • If not enough: Print "Insufficient funds!"
  • Task: Create an account for yourself with 100.Deposit100. Deposit 100.Deposit50. Try to withdraw $200.

【笔记】 如果学生提前完成,可以增加额外挑战:

  1. 增加一个 transfer(self, other_account, amount) 方法,把钱从一个账号转到另一个账号。
  2. 增加一个 is_bankrupt 属性。

Student Cheat Sheet (Print or share this)

Concept Python Syntax Meaning
Create a Class class Name: Define the blueprint
Initialize def __init__(self, ...): Set the starting stats
Identity self Referring to "this specific" object
Action def method_name(self): What the object can do
Instance obj = Name() Making a real thing from the blueprint

Troubleshooting / FAQ

  • Error: TypeError: __init__() takes 3 positional arguments but 4 were given
    • Cause: The student forgot self in the __init__ definition.
  • Error: NameError: name 'health' is not defined
    • Cause: Inside a method, they wrote health instead of self.health.
  • Conceptual Confusion: "Why do we need classes?"
    • Answer: "If we have 100 dogs, without classes, we need 300 variables. With classes, we just need 100 objects."
相关推荐
特立独行的猫A5 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
大可不必了9 小时前
03 函数定义和调用
开发语言·python
承渊政道10 小时前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame
爱学习的程序媛10 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
imgsq10 小时前
GESP Python 一到四级:备考路线与真题特点
python·青少年编程
eggwyw12 小时前
Anaconda安装卸载的详细流程指南
开发语言·python
2601_9679791212 小时前
纯手写:Python安装pip完整教程,搞了几小时,终于成功
python·教程·pip·安装·包管理
Norna12 小时前
缓存文件从没写出来:一个 .json 被当成目录用了
python
aifannihao15 小时前
AI 学习第 14 课:CNN 训 6 轮卡在 0.5352,数据没打乱
pytorch·python·深度学习·cnn·学习路线
yuyuxun115 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计