【小学生都能看懂的Python入门教程】第四章:面向对象编程 (类与对象) 深入面向对象——对象也有“朋友圈”:代码界的社交达人指南
深入面向对象——对象也有“朋友圈”:代码界的社交达人指南
一、继承:代码界的家族树
1. 基因传承:从祖宗到孙辈
class Animal:
def __init__(self, name):
self.name = name
self._dna = "AGCT" # 祖传基因
def eat(self):
return "进食中...(发出吧唧声)"
class Cat(Animal): # 继承自Animal
def meow(self):
return "喵~本喵自有傲娇基因!"
# 试试混血继承
class Garfield(Cat):
def eat(self): # 重写父类方法
return "吃千层面中...(发出吨吨吨声)"
继承关系图:
Animal
👇
Cat
👇
Garfield
冷知识:Python支持多重继承——就像混血儿可以说"我爸爸是超人,妈妈是外星公主"
二、多态:同一首歌的不同唱法
1. 动物交响乐团
class Dog(Animal):
def speak(self):
return "汪!翻译:今天去遛弯吗?"
class Bird(Animal):
def speak(self):
return "啾!翻译:要站你肩膀上!"
# 多态表演时间
pets = [Cat("雪球"), Dog("大黄"), Bird("翠花")]
for pet in pets:
print(pet.name + ": " + pet.speak())
输出结果:
雪球: 喵~本喵自有傲娇基因!
大黄: 汪!翻译:今天去遛弯吗?
翠花: 啾!翻译:要站你肩膀上!
多态哲学:程序不问对象"你是什么",只关心"你能做什么"——就像老板不关心你是人类还是AI,只要能写代码就行
三、封装:对象的隐私保护法
1. 访问控制:朋友圈权限设置
class SecretPet(Animal):
def __init__(self, name):
super().__init__(name)
self.__password = name + "123" # 双下划线私有属性
def get_secret(self):
return f"{self.name}的密码是:***"
def __hidden_method(self):
return "这是宠物银行的保险箱!"
# 尝试破解
mimi = SecretPet("咪咪")
print(mimi.get_secret()) # 正常输出
print(mimi.__password) # 报错!AttributeError
mimi.__hidden_method() # 报错!找不到方法
封装三原则:
- 公开方法是对外服务的窗口
- 受保护属性(_开头)是"熟人可见"
- 私有属性(__开头)是仅自己可见的朋友圈
四、实战演练:虚拟宠物家庭
需求说明
- 实现多物种宠物共处
- 不同宠物有独特行为
- 家庭能统一管理所有宠物
- 保护宠物的隐私数据
代码全解析
class Family:
"""多物种宠物之家"""
def __init__(self):
self.__pets = []
self.__secret_diary = []
def adopt(self, pet):
"""领养宠物"""
self.__pets.append(pet)
self.__secret_diary.append(f"{pet.name}加入家庭")
def daily_routine(self):
"""集体活动时间"""
print("\n=== 宠物之家日常 ===")
for pet in self.__pets:
if isinstance(pet, Cat):
print(pet.scratch_sofa())
elif isinstance(pet, Dog):
print(pet.dig_hole())
else:
print(f"{pet.name}在围观")
def show_diary(self, password):
"""查看秘密日记"""
if password == "ilovepets":
print("\n".join(self.__secret_diary))
else:
print("⚠️ 你不是这个家的主人!")
class Cat(Animal):
def scratch_sofa(self):
return "💥 猫咪正在执行沙发雕刻计划!"
class Dog(Animal):
def dig_hole(self):
return "🕳️ 狗狗启动花园考古项目!"
# 创建家庭
my_home = Family()
my_home.adopt(Cat("拿破仑"))
my_home.adopt(Dog("凯撒"))
my_home.adopt(Bird("维多利亚"))
# 日常活动
my_home.daily_routine()
运行结果:
=== 宠物之家日常 ===
💥 猫咪正在执行沙发雕刻计划!
🕳️ 狗狗启动花园考古项目!
维多利亚在围观
五、OOP冷知识档案馆
- 鸭子类型:“如果它走起来像鸭子,叫起来像鸭子,那就是鸭子”——Python的多态哲学
- Mixin类:像给宠物添加"会游泳"、"会装死"等技能包
- 属性装饰器:用@property优雅管理私有属性
- 魔术方法:通过__str__让对象学会自我介绍
为什么用封装?
因为对象也需要隐私——就像你不会把银行卡密码贴在朋友圈
结语:从单机游戏到社交网络
现在你已经掌握:
✅ 继承构建代码族谱
✅ 多态实现个性表达
✅ 封装保护对象隐私
✅ 复杂宠物家庭的开发
当你能设计出会社交、有个性、懂隐私的智能对象时,就真正步入了OOP的魔法世界。记住,好的面向对象设计就像经营朋友圈——要处理好继承(家族关系)、维护好多态(个性展示)、把握好封装(隐私界限)。
下期预告:《魔法方法——解锁新技能:Python界的霍格沃茨课程》
课后彩蛋:在Family类中添加以下代码,解锁隐藏剧情:
def __getitem__(self, index):
return self.__pets[index]
# 试试 print(my_home[0]) 看看效果
代码学习,前言技术分享,深度分析编程技术,普及科普编程技术,天天都要敲代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)