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
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...