⑴ python 抽象類
這哪裡有抽象類了?Python本身不支持抽象類,你也沒有導入諸如第三方的abc模塊。
⑵ 抽象類就是指用來被繼承的類嗎
1. 什麼是抽象類抽象類僅提供一個類型的部分實現。抽象類可以有實例變數,以及一個或多個構造函數。抽象類可以同時有抽象方法和具體方法。一個抽象類不會有實例,這些構造函數不能被客戶端調用來創建實例。一個抽象類的構造函數可以被其子類調用,從而使一個抽象類的所有子類都可以有一些共同的實現,而不同的子類可以在此基礎上有其自己的實現。
2. 抽象類的用途
1) 具體類不是用來繼承的。 Scott Meyers曾指出,只要有可能,不要叢具體類繼承。
2) 假設有2個具體類,類A和類B,類B是類A 的子類,那麼一個最簡單的修改方案是應當建立一個抽象類(或java介面)C,然後讓類A和類B成為抽象類C的子類。
3) 抽象類應當擁有盡可能多的共同代碼。以提高代碼的復用率。
4) 抽象類應當擁有盡可能少的數據。
3. 基於抽象類的模式和原則
1) 針對抽象編程,不要針對具體編程。
2) 盡量使用合成(Composition),而不要使用繼承來達到復用的目的。
3) 使用摸板方法模式
4. 什麼時候應當使用繼承復用
1) 子類是超類的一個特殊種類,而不是超類的一個角色,也就是要區分」is – a」 和「has-a」兩種關系。
2) 永遠不會出現需要將子類換成另一個子類的情況。如果設計師不是很肯定一個類回不會在將來變成另一個類的子類的話,就不應當把這個類設計成這個超類的子類。
3) 子類具有擴展超類的責任,而不是具有置換掉(Override)或注銷掉(Nullify)超類的責任。
4) 只有在分類學上有意義時,才可以使用繼承,不要叢工具類繼承。
⑶ 什麼是抽象類抽象類有什麼作用
抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。
作用:通常在編程語句中用 abstract 修飾的類是抽象類。在C++中,含有純虛擬函數的類稱為抽象類,它不能生成對象;在java中,含有抽象方法的類稱為抽象類,同樣不能生成對象。
抽象類裡面可以有非抽象方法但介面里只能有抽象方法 聲明方法的存在而不去實現它的類被叫做抽像類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。
不能創建abstract 類的實例。然而可以創建一個變數,其類型是一個抽像類,並讓它指向具體子類的一個實例。不能有抽像構造函數或抽像靜態方法。Abstract 類的子類為它們父類中的所有抽像方法提供實現,否則它們也是抽像類為。
(3)python抽象類用途擴展閱讀:
在使用抽象類時需要注意幾點:
1、抽象類不能被實例化,實例化的工作應該交由它的子類來完成,它只需要有一個引用即可。
2、抽象方法必須由子類來進行重寫。
3、只要包含一個抽象方法的抽象類,該方法必須要定義成抽象類,不管是否還包含有其他方法。
4、抽象類中可以包含具體的方法,當然也可以不包含抽象方法。
5、子類中的抽象方法不能與父類的抽象方法同名。
6、abstract不能與final並列修飾同一個類。
7、abstract不能與private、static、final或native並列修飾同一個方法。
⑷ Python是什麼它有哪些優點
Python是一門大家都比較熟悉的一門計算機語言,也是比較簡單的一門計算機語言,相對於來說更加簡單一些,而且也是不少人進入行業內的首要選擇,現在從事Python培訓機構也在不斷增加。
Python是一門好用又簡單易學的計算機編程語言,在近幾年中,Python受到了不少IT人士的追捧,熱度也是越來越高了,成為了我們入門首選的編程語言,為什麼呢?因為Python具有非常廣泛的應用范圍,在人工智慧、web開發之中具有非常好的應用,同時在金融分析、爬蟲等領域也具有很大的作用。
1、Python採用C語言進行開發,但是Python不再有C語言中的指針等復雜的數據類型存在。
2、Python具有很強的面向對象特性,同時也簡單化了面向對象的實現,可以消除保護類型、抽象類、介面等面向對象的元素。
3、Python代碼可以使用空格或者製表符縮進的方式分割代碼。
4、Python僅僅只有31個保留字,而且沒有分號、begin、end等標記。
5、Python是強類型的語言,變數創建之後會對應一種數據類型,出現在統一表達式中的不同類型的變數需要做類型轉換。
⑸ 抽象類到底有什麼用途啊
抽象類的一個功能--不能被實例化。也就是不能被new.
舉個生活中的例子
寵物類下面有狗狗類,貓貓類來繼承它。
一般的情況我們有這兩種方法
寵物類 a =new 狗狗類();
翻譯就是。我有一隻寵物,這只寵物是狗狗,它叫a
狗狗類a=new 狗狗類();
我有一隻狗狗,它叫a.
這個不區別。關鍵的是,樓主來看下面的代碼
寵物類 a=new 寵物類();
雖然我們經常說,我有一隻寵物。(但是請注意,實際上沒有一種叫寵物有東西。寵物是個泛泛的概念,我們現實生活中有狗和貓)
所以抽象類不能被new的功能。是為了符合事實意義。
同時也是類的一種高度概括。
我們說類是對象的抽象。抽象類又是各種各校類的抽象
⑹ python裡面也有java中的抽象類和介面嗎
介面是抽象類的一種特殊形式。先看一下定義,類中有抽象方法的類是抽象類,介面定義的是類中的方法全部都是抽象方法。也就是說抽象類中抽象方法可以是一個或者全部,但是介面中方法只能全部都是抽象方法。還有在實現的時候,介面是通過實現的形式,抽象類是通過繼承的方式。
⑺ 簡答題:抽象類的作用和意義
抽象方法是基類中定義的方法,但卻沒有任何實現。在java中,可以把方法申明成一個介面。而在python中實現一個抽象方法的簡單的方法是:
class Sheep(object):
def get_size(self):
raise NotImplementedError
⑻ python下的抽象類的用途和意義
抽象方法是基類中定義的方法,但卻沒有任何實現。在java中,可以把方法申明成一個介面。而在python中實現一個抽象方法的簡單的方法是:
class Sheep(object):
def get_size(self):
raise NotImplementedError
任何從Sheep繼承下來的子類必須實現get_size方法。否則就會產生一個錯誤。但這種實現方法有個缺點。定義的子類只有調用那個方法時才會拋錯。這里有個簡單方法可以在類被實例化後觸發它。使用python提供的abc模塊。
import abc
class Sheep(object):
__metaclass__ = abc.ABCMeta
@abc.absractmethod
def get_size(self):
return
這里實例化Sheep類或任意從其繼承的子類(未實現get_size)時候都會拋出異常。
因此,通過定義抽象類,可以定義子類的共同method(強制其實現)。