【小学生都能看懂的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()    # 报错!找不到方法

封装三原则

  1. 公开方法是对外服务的窗口
  2. 受保护属性(_开头)是"熟人可见"
  3. 私有属性(__开头)是仅自己可见的朋友圈

四、实战演练:虚拟宠物家庭

需求说明

  1. 实现多物种宠物共处
  2. 不同宠物有独特行为
  3. 家庭能统一管理所有宠物
  4. 保护宠物的隐私数据

代码全解析

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冷知识档案馆

  1. 鸭子类型:“如果它走起来像鸭子,叫起来像鸭子,那就是鸭子”——Python的多态哲学
  2. Mixin类:像给宠物添加"会游泳"、"会装死"等技能包
  3. 属性装饰器:用@property优雅管理私有属性
  4. 魔术方法:通过__str__让对象学会自我介绍

为什么用封装?
因为对象也需要隐私——就像你不会把银行卡密码贴在朋友圈

结语:从单机游戏到社交网络

现在你已经掌握:
✅ 继承构建代码族谱
✅ 多态实现个性表达
✅ 封装保护对象隐私
✅ 复杂宠物家庭的开发

当你能设计出会社交、有个性、懂隐私的智能对象时,就真正步入了OOP的魔法世界。记住,好的面向对象设计就像经营朋友圈——要处理好继承(家族关系)、维护好多态(个性展示)、把握好封装(隐私界限)。

下期预告:《魔法方法——解锁新技能:Python界的霍格沃茨课程》


课后彩蛋:在Family类中添加以下代码,解锁隐藏剧情:

def __getitem__(self, index):
    return self.__pets[index]
# 试试 print(my_home[0]) 看看效果
posted @   爱上编程技术  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示