Add Day_11: 面向对象(一)类与实例
This commit is contained in:
@@ -0,0 +1,88 @@
|
|||||||
|
# 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岁
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user