Files
DailyChallenge_ProgrammingD…/Day_11

Day_11 · 面向对象(一):类与实例

预计耗时:25~30 分钟 Django 最核心的东西是"用类表示数据"(ORM)。今天第一次接触类——先别慌,照抄、运行、改改看。

今日知识点

  • 类(class)是"图纸",实例(instance)是按图纸造出来的"实物"
  • __init__:造实例时自动执行的"初始化"方法,用来存数据
  • self:代表"这个实例自己",self.name 就是"这个实例的名字"
  • 实例方法:类里面定义的函数,通过 实例.方法() 调用

先学(教程)

任务(后做)

新建 day11.py:

  1. 定义一只狗:
    class Dog:
        def __init__(self, name, breed):
            self.name = name        # 狗的名字
            self.breed = breed      # 狗的品种
    
        def bark(self):
            print(f"{self.name}:汪!")
    
    d1 = Dog("旺财", "金毛")
    d2 = Dog("小黑", "柯基")
    d1.bark()
    d2.bark()
    
  2. 加一个方法,打印自我介绍:
    # 在 Dog 类里再加一个方法:
    def intro(self):
        print(f"我是{self.breed},叫{self.name}")
    
    d1.intro()
    
  3. 进阶(加分):照葫芦画瓢,自己定义一个 User 类,字段 name、age, 方法 greet() 打印 你好,我叫xxx,今年xx岁,创建两个用户调用。 (提示:这正是 Django 里 class User(models.Model) 的雏形。)

完成标准

  • 两只狗都能叫、都能自我介绍
  • 能说出 self 是干嘛的
  • (进阶)User 类完成

提交方式:把 day11.py 代码贴在当日工单评论里。

参考解答(先做再看)

class Dog:
    def __init__(self, name, breed):
        self.name = name
        self.breed = breed

    def bark(self):
        print(f"{self.name}:汪!")

    def intro(self):
        print(f"我是{self.breed},叫{self.name}")

d1 = Dog("旺财", "金毛")
d2 = Dog("小黑", "柯基")
d1.bark()          # 旺财:汪!
d2.bark()          # 小黑:汪!
d1.intro()         # 我是金毛,叫旺财

# 进阶
class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"你好,我叫{self.name},今年{self.age}岁")

u1 = User("张三", 18)
u1.greet()         # 你好,我叫张三,今年18岁