# 导入 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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/86867.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/86867.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/86867.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel大厂自动化报表实战(高级函数与数据连接)

这是Excel大厂自动化报表实战第一期--高级函数与数据连接 数据资源已经与这篇博客捆绑,有需要者可以下载通过网盘分享的文件:2.4自动化报表-8月成交数据.xlsx,2.4自动化报表-8月获客数据.csv等2个文件 链接: https://pan.baidu.com/s/16nzy1I…

造成服务器宕机的原因都有哪些?

随着网络业务的快速发展,服务器对于企业的重要性也在逐渐提高,稳定的服务器能够让业务正常持续的运行,给用户带来快速的数据传输速度,但是服务器在进行长时间运行的过程中,也会出现服务器宕机等故障,本文主…

Redis 安装实践:基于鲲鹏 ARM 架构 Ubuntu 环境

文章目录 🧰 环境信息🚀 安装步骤🔧 安装并锁定版本📁 修改数据目录配置✅ 启动并验证📚 参考文档📝 小结 🧰 环境信息 系统版本:Ubuntu 20.04.6 LTS架构平台:鲲鹏 ARM&…

ubuntu 无法访问位置 error mounting 解决办法 双系统

sudo tail -n 50 /var/log/syslog 从 dmesg 的输出中,我们看到了两条关键的错误信息:深色版本[ 57.277443] ntfs3: nvme0n1p6: It is recommended to use chkdsk. [ 57.278906] ntfs3: nvme0n1p6: volume is dirty and "force" flag is n…

数据库入门:从零开始掌握核心概念

数据库基础 1.什么是数据库? 存储数据用文件就可以了,为什么还要弄个数据库? 文件保存数据有以下几个缺点: 文件的安全性问题 文件不利于数据查询和管理文件不利于存储海量的数据文件在程序中控制不方便 数据库存储介质&#xf…

【Steel Code】8.4 PLATE GIRDER 钢板梁

文章目录 8.4 板梁 GIRDER8.4.1 设计强度8.4.2 正常使用性的最小腹板厚度8.4.3 避免受压翼缘屈曲的最小腹板厚度8.4.4 约束梁的弯矩承载力8.4.4.1 腹板不易剪切屈曲8.4.4.2 腹板易剪切屈曲 8.4.5 轴向力的影响8.4.6 剪切屈曲阻力8.4.7 中间横向腹板加劲肋8.4.7.1 间距8.4.7.2 加…

P8784 [蓝桥杯 2022 省 B] 积木画

P8784 [蓝桥杯 2022 省 B] 积木画 - 洛谷 题目描述 小明最近迷上了积木画,有这么两种类型的积木,分别为 I 型(大小为 2 个单位面积) 和 L 型 (大小为 3 个单位面积): 同时,小明有一块面积大小为 2N 的画布,画布由 2N…

C++标准库大全(STL)

C标准库大全(STL) 1. 容器(Containers) *问题类型: 序列容器(std::vector, std::deque, std::list, std::forward_list, std::array, std::string): 各自的特点、底层实现、优缺点和适用场景? 容…

论文略读:Ask, and it shall be given: On the Turing completeness of prompting

ICLR 2025 5566 自从 GPT 的成功以来,大型语言模型(LLMs)彻底革新了机器学习领域,催生了所谓的 LLM 提示范式(prompting paradigm)。在这一范式下,研究者倾向于训练一个通用的大模型&#xff0…

基于springboot视频及游戏管理系统+源码+文档+应用视频

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven…

香港维尔利登陆韩国,联合釜山数字医疗园区打造AI健康交付平台

香港维尔利健康科技集团正式宣布,与韩国釜山数字医疗产业园区达成战略合作协议,双方将共同建设“AI健康交付平台”,推动人工智能医疗技术在韩国本土的落地转化,并建立覆盖大健康全链条的服务体系。这一合作标志着香港维尔利在东北…

OceanBase v4.3.5 特性解读:通过OSS WORM特性进行备份归档

概述 OceanBase 最新发布的V4.3.5 中,备份归档服务已适配阿里云OSS的 WORM特性,支持将配置了合规保留策略的OSS Bucket作为备份存储的目的端,有效满足用户数据安全存储与合规性的需求。 阿里云对象存储(OSS)的 WORM&…

LVS 负载均衡详解:四层转发原理与三种经典模式全面解析

文章目录 一、四层 vs 七层负载均衡:本质区别 四层 LVS 的核心特点: 二、LVS 工作原理概述 三、LVS 三种工作模式对比 模式对比总览 1. LVS-NAT 模式(Network Address Translation) 2. LVS-DR 模式(Direct Routi…

从零手写Java版本的LSM Tree (八):LSM Tree 主程序实现

🔥 推荐一个高质量的Java LSM Tree开源项目! https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree,专为高并发写入场景设计。 核心亮点: ⚡ 极致性能:写入速度超…

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…

PyTorch深度学习框架60天进阶学习计划-第57天:因果推理模型(一)

第57天:因果推理模型(一)- 揭开因果关系的神秘面纱 🎯 学习目标概览 今天我们要踏入一个既古老又前沿的领域——因果推理!如果说传统的机器学习是在找"相关性",那因果推理就是在挖掘"因果…

Java反射操作百倍性能优化

欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。 目录 引言避免在性能敏感的热点代码中使用反射缓存反射…

STM32 _main 里做了什么

Application startup 在大多数嵌入式系统中,进入 main 函数之前需要执行一段初始化序列来设置好系统环境。下图展示的就是这段初始化序列的默认流程: Figure 1. Default initialization sequence __main is responsible for setting up the memory and…

Java八股文——MySQL「SQL 基础篇」

NOSQL和SQL的区别? 面试官您好,SQL(关系型数据库)和NoSQL(非关系型数据库)是当今数据存储领域的两大主流阵营。它们之间不是“谁取代谁”的关系,而是两种完全不同的设计哲学,适用于…

华为OD机考-数字螺旋矩阵(JAVA 2025B卷)

public class RotateMatrix {public static void main(String[] args) {// 顺时针螺旋矩阵printMatrixV1();// 逆时针螺旋矩阵//printMatrixV2();}private static void printMatrixV2() {Scanner scan new Scanner(System.in);while(scan.hasNextLine()){String[] line scan.…