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."
相关推荐
前端与小赵2 小时前
Python 数据结构陷阱与复数运算优化:列表、元组、字典成员操作辨析及 NumPy 高效实践
python
天天进步20152 小时前
Python全栈项目--基于深度学习的视频目标跟踪系统
python·深度学习·音视频
天天进步20152 小时前
Python全栈项目--Python自动化运维工具开发
运维·python·自动化
(●—●)橘子……3 小时前
力扣第503场周赛练习理解
python·学习·算法·leetcode·职场和发展·周赛
爱吃羊的老虎3 小时前
【JAVA】python转java:Spring Boot 入门
java·spring boot·python
小桥流水---人工智能3 小时前
【已解决】ImportError: cannot import name ‘AdamW‘ from ‘transformers.optimization‘
python
芝麻开门GEO4 小时前
泰安GEO优化服务,真的能提升效果吗?
人工智能·python
颜酱4 小时前
选读:工业级调用 LangChain:从 Demo 到企业级应用
python
颜酱4 小时前
LangChain 调用大模型实战:从跑通到服务商与模型选型
python·langchain