当前位置: 首页 > news >正文

python中的面向对象:继承、封装、多态

# 导入 ABC 是指的引入抽象父类(Abstract Base Class - 本质是抽象方法装饰器)
from abc import ABC, abstractmethodclass Food(object):# 构造方法def __init__(self, name):self.name = name# Food子类
class Bone(Food):def __init__(self):super().__init__('Bone')class Fish(Food):def __init__(self):super().__init__('Fish')class Worm(Food):def __init__(self):super().__init__('Worm')# Animal类,继承ABC就有了抽象方法的定义权
class Animal(ABC):def __init__(self, name):self.name = name# getter方法@propertydef name(self):if self.__name:return self.__nameelse:return 'no name'# __变量 就是私有属性@name.setterdef name(self, name):# 逻辑判断if isinstance(name, str):self.__name = name.title()# 否则返回空对象else:self.__name = None# 吃饭 - 父类中的eat是抽象行为@abstractmethod# 定义一个抽象方法,让子类去进行自行实现def eat(self, food: Food):...# 子类
class Cat(Animal):# 使用父类构造方法def __init__(self, name):super(Cat, self).__init__(name)# 重写抽象方法def eat(self, food: Food):print(f'{self.name} eats {food.name}')def walk(self):print(f'{self.name} walks quickly')class Dog(Animal):def __init__(self, name):super(Dog, self).__init__(name)def eat(self, food: Food):print(f'{self.name} eats {food.name}')def chase_tail(self):print(f'{self.name} chases tail')class Person(object):def __init__(self, name):self.name = namedef feed(self, anmial: Animal,food: Food):print(f'{self.name} feeds {anmial.name}')anmial.eat(food)print(f'{anmial.name}吃饱了,准备给 {self.name}, 表演一个')if isinstance(anmial, Dog):anmial.chase_tail()elif isinstance(anmial, Cat):anmial.walk()p1 = Person('John')cat = Cat('jery')
dog = Dog('tom')bone = Bone()
fish = Fish()p1.feed(dog, bone)
p1.feed(cat, fish)

执行结果如下
在这里插入图片描述

相关文章:

  • AFE之MC33772B详解
  • yum降低软件包版本
  • 第六天 界面操作及美化(6.2 控件属性节点)
  • AIGC 基础篇 Python基础 06 函数基础
  • mvnd-快速打包maven项目
  • 【通用定时器TIM2 TIM3 TIM4 TIM5】
  • 大端小端以及判别方式
  • java集合篇(三) ---- Collection 接口
  • LINE 接入说明
  • 学了软件测试后可以做哪些工作
  • Linux系统下安装RocketMQ5.3
  • Blazor Web Assembly - 使用Power Automate Desktop来跟踪一下Blazor页面的内存使用情况
  • 【win10神州网信政府版开启远程桌面服务mstsc 】
  • GO 1.25
  • 什么是NIST CSF合规?ManageEngine卓豪合规指南!
  • linux用反汇编分析访问空指针问题
  • Android学习之Provider
  • linux 黑马 第1-2章
  • 北航自由指令驱动的多模态导航最新研究:OctoNav:开启通用智能体具身导航
  • Python训练营---DAY53
  • 东莞茶山网站建设/百度账号快速注册入口
  • 简单网页制作模板代码/南宁seo优化公司
  • 瑶海区网站建设/被忽悠去做网销了
  • 工商注册服务平台/重庆百度seo
  • 做酒的网站/百度健康人工客服电话24小时
  • 招聘网站建设费用多少/bt磁力搜索引擎在线