Files
DailyChallenge_ProgrammingD…/Day_4

Day_4 · 面向对象(一):从 class User 开始

Django 最核心的能力是 ORM:你定义类,Django 帮你管理数据库表。 打开任何 Django 项目,第一行几乎都是 class Article(models.Model):—— 这一行的背后,是整片面向对象的大海。 今天我们从最小的一步开始:类和实例。

今日知识点 → 以后在 Django 里对应什么

今天练的 以后在 Django 里会看到
类定义 + 类属性 class Article(models.Model),字段就是类属性
__init__ / 实例方法 Model 实例的构造、.save() / .delete()
__str__ / __repr__ 魔法方法 Admin 后台显示的名称、QuerySet 打印结果

题目(必做):设计一个 User 类

背景:Django 里定义一个用户模型只需要三行:

class User(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField()

看起来像魔法,其实核心就是"类 + 类属性"。今天我们不用 Django,用纯 Python 复刻 User 类。

要求:

  1. 类属性 all_users = [](模拟数据库表,用来存所有创建出来的用户)
  2. __init__(self, name, email, age):把三个参数存成实例属性,并把 self 追加进 all_users
  3. 实例方法 get_full_name():返回 用户:<name>(<email>)
  4. 魔法方法 __str__(self):返回 self.name(Django admin 后台显示的就是它!)
  5. 魔法方法 __repr__(self):返回 User(name='zhangsan', email='zs@163.com', age=20) 这种"能还原出原对象"的格式

验证:

  • 创建 3 个用户,打印 User.all_users
  • 分别 print 每个用户(会触发 __str__)
  • 用 eval(repr(u1)) 还原出 u1 的信息,确认内容一致

思考题(写在注释里):__str__ 和 __repr__ 到底有什么区别? (提示:一个是"给人看的",一个是"给开发者调试看的"——具体从使用场景和返回值要求去想。)

出题意图:Django Model 就是"类 + 字段",实例方法和 __str__ 是每个模型都会写的东西。 把这一题吃透,class Article(models.Model) 对你来说就不再是黑魔法。


完成标准

  • User 类全流程跑通(创建 / 打印 / 还原)
  • 想通了 __str__ 和 __repr__ 的区别

完成后打开 参考解答.py 对照。建议看完后关掉文件,自己再默写一遍。