Files
DailyChallenge_ProgrammingD…/Day_11/README.md
T

89 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Day_11 · 面向对象(一):类与实例
> 预计耗时: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岁
```