您好,登錄后才能下訂單哦!
本篇內容主要講解“python的多態與抽象舉例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python的多態與抽象舉例分析”吧!
面向對象編程中多態指的是一種數據類型有多種形態。
類示例:
class Animal:kind = '動物'def __init__(self, name):self.name = namedef eat(self):print(f'{self.name}正在進食!')class Cat(Animal):def __init__(self, name, count=0):self.count = count Animal.__init__(self, name)def work(self):print(f'貓咪“{self.name}”捉住了{self.count}只老鼠')class Dog(Animal):def __init__(self, name, count=0):self.count = count Animal.__init__(self, name)def work(self):print(f'獵狗“{self.name}”捉住了{self.count}只兔子')
上述案例種Animal類這種數據有2種形態,一是貓、二是狗。
多態的好處是可以統一接口,提高多人配合做大型項目時的工作效率。
統一接口示例:
def work(x, num):x.count += num x.work()white_cat = Cat('大白貓')balck_dog = Dog('老黑狗')work(white_cat, 2)work(balck_dog, 3)out:貓咪“大白貓”捉住了2只老鼠 獵狗“老黑狗”捉住了3只兔子
講解:
在多人配合的項目中:甲是項目規劃師,他定義了Animal類;乙定義了Cat類、丙定義了Dog類,這時丁在代碼中實例化Cat和Dog,要寫有關Cat和Dog工作的代碼,如果沒有統一接口work函數,那么寫起來會很麻煩,得針對不同的實例判斷其類型再分別做處理。此時就可以運用多態的概念,甲寫出統一接口,這樣乙、丙、丁在寫Cat、Dog實例工作時可以使用統一接口work函數。這樣可以提高團隊協作默契度,減少重復代碼,提高代碼可讀性。
面向對象編程中抽象指的是一種特殊的類,抽象類不是用來實現功能的,而是用來規范子類方法名的。
類示例:
class WorkAnimal:def work(self):raise NotImplementedError('要工作的動物必須統一實現work方法!')
講解:
可以看到WorkAnimal本身沒有實現功能,只是用來提示所有寫子類的程序員要統一子類的方法名。繼續以上的案例,假設程序員丙寫Dog類的時候沒有遵循抽象類統一命名規范,他的代碼如下:
class Dog(Animal, WorkAnimal):def __init__(self, name, count=0):self.count = count Animal.__init__(self, name)def catch(self):print(f'獵狗“{self.name}”捉住了{self.count}只兔子')
此時程序員丙和丁調用統一接口work函數就會報錯。
完整代碼如下:
class Animal:kind = '動物'def __init__(self, name):self.name = namedef eat(self):print(f'{self.name}正在進食!')class WorkAnimal:def work(self):raise NotImplementedError('要工作的動物必須統一實現work方法!')def work(x, num):x.count += num x.work()class Dog(Animal, WorkAnimal):def __init__(self, name, count=0):self.count = count Animal.__init__(self, name)def catch(self):print(f'獵狗“{self.name}”捉住了{self.count}只兔子')balck_dog = Dog('老黑狗')work(balck_dog, 3)out:NotImplementedError: 要工作的動物必須統一實現work方法!
到此,相信大家對“python的多態與抽象舉例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。