python 父類方法中使用不同的子類中的不同類對象

来源:https://www.cnblogs.com/cfpl/archive/2019/12/13/12037419.html
-Advertisement-
Play Games

1 # coding:utf-8 2 3 4 class Animal(object): 5 def __init__(self): 6 self._name = None 7 self._f = None 8 9 def eat(self): 10 print("%s吃%s" % (self._n ...


 1 # coding:utf-8
 2 
 3 
 4 class Animal(object):
 5     def __init__(self):
 6         self._name = None
 7         self._f = None
 8 
 9     def eat(self):
10         print("%s吃%s" % (self._name, self._f().food()))
11 
12 
13 class Dog(Animal):
14     def __init__(self):
15         Animal.__init__(self)
16         self._f = DogFood
17         self._name = ""
18 
19 
20 class DogFood():
21     def food(self):
22         return "狗糧"
23 
24 
25 class Cat(Animal):
26     def __init__(self):
27         Animal.__init__(self)
28         self._name = ""
29         self._f = CatFood
30 
31 
32 class CatFood():
33     def food(self):
34         return "貓糧"
35 
36 
37 dog = Dog()
38 dog.eat()
39 cat = Cat()
40 cat.eat()
View Code

狗吃狗糧
貓吃貓糧

 

 1 # coding:utf-8
 2 
 3 
 4 class CatFood():
 5     def food(self, food_name):
 6         self.food_name = food_name
 7 
 8 cf = CatFood
 9 
10 cf1 = CatFood()
11 cf1.food("")
12 cf2 = CatFood()
13 cf2.food("")
14 
15 print(cf1.food_name)
16 print(cf2.food_name)
View Code


 

 1 # coding:utf-8
 2 
 3 
 4 class CatFood():
 5     def food(self, food_name):
 6         self.food_name = food_name
 7 
 8 cf = CatFood
 9 
10 cf1 = CatFood()
11 cf1.food("")
12 cf2 = CatFood()
13 cf2.food("")
14 
15 print(CatFood)
16 print(cf)
17 print(cf1)
View Code

<class '__main__.CatFood'>
<class '__main__.CatFood'>
<__main__.CatFood object at 0x000000000279B320>

 

cf CatFood 是類對象

cf1是實例對象

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Number() 轉換數值,String() 轉換字元串,Boolean() 轉換布爾值。 JavaScript 數據類型 JavaScript 中有五種可包含值的數據類型: 字元串(string) 數字(number) 布爾(boolean) 對象(object) 函數(function) 有三種 ...
  • break 語句“跳出”迴圈。 continue 語句“跳過”迴圈中的一個迭代。 Break 語句 在本教程稍早的章節中,您已見到了 break 語句。它被用於“跳出” switch 語句。 break 語句也可用於跳出迴圈。 break 語句會中斷迴圈,並繼續執行迴圈之後的代碼(如果有): 實例 ...
  • 只要條件為 true,迴圈能夠一直執行代碼塊。 While 迴圈 while 迴圈會一直迴圈代碼塊,只要指定的條件為 true。 語法 while (條件) { 要執行的代碼塊 } 實例 在下麵的例子中,迴圈中的代碼將運行,一遍又一遍,只要變數(i)小於 10: while (i < 10) { t ...
  • 首先,描述一下我的業務場景及項目分層結構,非標準DDD(其實我不覺得有標準),只是思考的時候有帶入DDD思想。 業務場景:這是一個ERP系統對中台提供的介面項目,倉儲操作大多都是存儲過程去完成的。 項目結構,如圖: WebAPI層:這個不用多說了,入口。 DTO層:增加數據傳入傳出對象,和領域mod ...
  • 基於多線程任務隊列執行時間測試——泛型單例模式落地 [toc] 1.需求 比如有100個任務,多線程非同步執行,統計執行完所有任務所耗費的時間。如,開始線程是線程A,最後的線程是B,記錄B的DataTime.Now A的DataTime.Now. 2.遇到的問題 因為這裡涉及到多線程,非同步,所以需要在 ...
  • nodejs-翻轉演算法 1 /** 2 * Created by moon on 2019/12/14. 3 */ 4 //程式運行完成時一定要有輸出語句,本工具才能正確展示運行結果。 5 6 7 function abc() 8 { 9 var n = 50; 10 var min_n = n / ...
  • 直接使用官方子包可以實現websocket協議, golang.org/x/net/websocket 如果在這個目錄沒有這個包就去github下載net庫,放進這個目錄$GOPATH/src/golang.org/x/net就行了 服務端代碼: package main import ( "tim ...
  • 一、 前言 作為一枚程式員,你肯定對IntelliJ IDEA這個工具一點也不陌生!或許你沒有用過,但你也一定聽說過。作為在業界被公認為最好的java開發工具,IDEA每次大版本更新都備受矚目。劃重點,IntelliJ IDEA 2019.3現已發佈! 近期,我也是從2019.2版本升級到了2019 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...