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

Open
opened 2026-08-22 17:26:36 +08:00 by shimmer · 31 comments
Owner

题目与教程详见仓库对应目录 Day_11/README.md(本仓库已克隆即得)。

预计耗时: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岁
> 题目与教程详见仓库对应目录 Day_11/README.md(本仓库已克隆即得)。 > 预计耗时:25~30 分钟 > Django 最核心的东西是"用类表示数据"(ORM)。今天第一次接触**类**——先别慌,照抄、运行、改改看。 ## 今日知识点 - **类**(class)是"图纸",**实例**(instance)是按图纸造出来的"实物" - `__init__`:造实例时自动执行的"初始化"方法,用来存数据 - `self`:代表"这个实例自己",`self.name` 就是"这个实例的名字" - 实例方法:类里面定义的函数,通过 `实例.方法()` 调用 ## 先学(教程) - 菜鸟教程("面向对象"一节,先看到"创建实例"为止):https://www.runoob.com/python3/python3-class.html - B站黑马教程(看讲"面向对象、类"的几集):https://www.bilibili.com/video/BV1qW4y1a7fU/ ## 任务(后做) 新建 `day11.py`: 1. 定义一只狗: ```python 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. 加一个方法,打印自我介绍: ```python # 在 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` 代码贴在当日工单评论里。 ## 参考解答(先做再看) ```python 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岁 ```
image.png
<img width="1208" alt="image.png" src="attachments/8e141c3f-dcc5-40f5-9206-5dbd0a1a7073">
176 KiB

image.png

![image.png](/attachments/95e28f70-ffb9-4b17-a3ca-3d2b9e66d50d)

image.png

![image.png](/attachments/bbd98458-4a63-4789-8dd1-dc7adb31bf51)
189 KiB
image.png
<img width="1040" alt="image.png" src="attachments/8b9e341a-0740-4fb5-a58f-3dc8dfe461b7">
image.png
<img width="600" alt="image.png" src="attachments/3f5a69ce-b010-4ca4-91f8-a6dbaf8fc8b5">

image.pngimage.png

<img width="410" alt="image.png" src="attachments/22c83f53-aa32-40f7-95b2-c6a0e6c0ff0c"><img width="388" alt="image.png" src="attachments/3e26dddf-c7f1-4cca-ae46-266746a6aaaf">
image.png
<img width="586" alt="image.png" src="attachments/9faaf9b8-8e9a-4667-9f84-5831d9e1bb61">
119 KiB
{C7D38BFB-8AAA-4056-949A-67F19AAB244D}.png
<img width="782" alt="{C7D38BFB-8AAA-4056-949A-67F19AAB244D}.png" src="attachments/b2149418-3ad4-4743-8ff4-8a0204cffea8">
屏幕截图 2026-09-19 135632.png
<img width="1439" alt="屏幕截图 2026-09-19 135632.png" src="attachments/f294a7b4-4758-4d25-acdf-832c622f28ff">
屏幕截图 2026-09-21 124844.png
<img width="1277" alt="屏幕截图 2026-09-21 124844.png" src="attachments/e220900f-4350-4311-8c67-e88fc675b537">

image.png

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()
d2.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)
u2 = User("小红", 20)
u1.greet()
u2.greet()
![image.png](/attachments/925a367d-d197-469f-b067-03e64b9d6e23) ```python 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() d2.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) u2 = User("小红", 20) u1.greet() u2.greet() ```
178 KiB
![image.png](/attachments/a98e1d34-c326-4ab2-bbe2-e93ba554153c) https://github.com/wyn-netizen/hello-daily-challenge
260 KiB

QQ_1790044444645.png

![QQ_1790044444645.png](/attachments/c58cd0b5-8e08-4193-b068-97962f258ea1)
image.png
<img width="1864" alt="image.png" src="attachments/2c51bcbe-1dea-44e1-bfa6-019118e50649">
266 KiB
image.png
<img width="1589" alt="image.png" src="attachments/c5808589-fa27-420e-8583-54f71e7e008c">
378 KiB
image.png
<img width="394" alt="image.png" src="attachments/f8f37a43-bb6c-41ba-9178-9343ebd731ce">
180 KiB
image.png
<img width="1152" alt="image.png" src="attachments/07d61d40-5575-4587-ac0c-833878c936cb">
244 KiB

image.png

![image.png](/attachments/6af11cac-e8ed-4f3d-9bed-fd620739949f)
2.2 MiB

`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 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() `
image.png
<img width="1280" alt="image.png" src="attachments/d812f499-2c65-4420-bbea-69a383ab610b">
367 KiB

image.png

![image.png](/attachments/91af629c-7730-4d52-a459-bc71ba95065e)
693 KiB

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

Dog 类 + init + bark()/intro(),两个实例各自输出

day11.png

**Day_11 · 面向对象(一)类与实例** Dog 类 + __init__ + bark()/intro(),两个实例各自输出 ![day11.png](https://cdn.jsdelivr.net/gh/xu675693517-hue/hello-daily-challenge@main/screenshots/day11.png)

image.png

![image.png](/attachments/ac081444-f7fc-414f-863a-07d97428f524)
Sign in to join this conversation.