python 抽象方法 python抽象方法

2021-10-13 09:02:07 字數 1171 閱讀 2407

1.抽象方法的概念

之前我們定義乙個基類的時候,如果要求子類必須重寫父類中的某乙個方法,可以這樣做:

定義乙個名為pizza的基類,讓其get_radius方法必須被子類繼承

class pizza(object):

@staticmethod

def get_radius():

raise notimplementederror

如果子類沒有重寫該方法就會觸發錯誤

class sub_pizza(pizza):

pass

sub_pizza().get_radius()

錯誤資訊如下:

raise notimplementederror

notimplementederror

但是上述方法的缺點是:如果只例項化了子類,而沒有呼叫方法,notimplementederror就不會被觸發;

抽象方法允許我們在類例項化的同時,通過觸發異常來告訴我們那些父類中的方法是必須在子類中重寫的,而不需要呼叫方法才可以知道哪些方法是必須要被重寫的;

2.抽象方法的實現

抽象方法的實現使用abc模組實現

定義基類,並指定其中的抽象方法(必須在子類中被重寫)

import abc

class basepizza(object):

__metaclass__ = abc.abcmeta

@abc.abstractmethod

def get_radius(self):

"""return the ingredient list"""

定義子類繼承上述類:

class dietpizza(basepizza):

pass

dietpizza()

執行結果:

typeerror: can't instantiate abstract class dietpizza with abstract methods get_radius

由於在子類中沒有重寫方法get_radius,在例項化子類的時候,報typeerror;

正確**如下:

class dietpizza(basepizza):

@staticmethod

def get_radius(self):

return none

dietpizza()

Python抽象方法

from abc import abcmeta,abstractmethod class basemessage object 抽象類方法一 defsend self,x1 必須繼承basemessage,然後其中必須編寫send方法。用於完成具體業務邏輯。raise notimplementede...

python學習方法 十二種學習Python的方法

python學習方法 python是地球上最流行的程式語言之一。它被世界各地的開發商和製造商所接受。大多數linux和macos計算機都預裝了python版本,現在,即使是少數windows計算機 商也正在安裝python。也許您參加聚會遲到了,您想學習但不知道該去 這12個資源將幫助您入門,並逐步...

python中迭代器的基本方法 Python迭代器

迭代器是可以迭代的物件。在本教程中,您將了解迭代器的工作原理,以及如何使用 iter 和 next 方法構建自己的迭代器。迭代器在python中無處不在。它們優雅地實現在迴圈,推導,生成器等中,但隱藏在明顯的視覺中。python中的迭代器只是乙個可以迭代的物件。乙個將一次返回資料的物件或乙個元素。從...