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:
- 定义一只狗:
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() - 加一个方法,打印自我介绍:
# 在 Dog 类里再加一个方法: def intro(self): print(f"我是{self.breed},叫{self.name}") d1.intro() - 进阶(加分):照葫芦画瓢,自己定义一个
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岁