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)

執行結果如下
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處: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.…