定義抽象類,需要使用abc模組,該模組定義了乙個元類(abcm和裝飾器 @abstractmethod, @abstract程式設計客棧property
如果要例項化繼承了www.cppcns.comfoo 的子類,子類必須實現程式設計客棧了foo所有的抽象方法(跟j**a一樣),否則例項化報錯。
抽象類不能直接例項化
#!coding=utf-8
from abc import abcmeta, abstractmethod, abstractproperty
class foo:
__metaclass__ = abcmeta
@abstractmethod
#在python3.0中 使用 class foo(metaclass=abcmeta)語法
def spam(self, a, b):
pass
@abstractproperty
def name(self):
pass
class bar(foo):
def spam(self, a, b):
print a, b
def name():
pass
b = bar()
b.spam(1,2)
抽象基類支援對已經存在的類進行註冊,使其屬於該基類,使用register()方法
向抽象基類註冊某個類,對於註冊類中的例項,涉及後續基類的類檢測操作比如(isinstance, issubclass) 將返回true,向抽象基類註冊某個類時,不會檢查該類是否實現了任何抽象方法或特性,這種註冊過程只會影響型別檢查
class crok(object):
def spam(self, a, c):
print "gork.span"
foo.register(grok)
本文標題: python抽象基類用法例項分析
本文位址: /jiaoben/python/125863.html
python抽象基類理解
抽象基類它提供了介面,但是又沒有去把介面實現的類,需要由子類完成。感覺它就是老闆,只告訴你要完成專案a,你接到專案a後 繼承 你自己去把它完成。抽象基類特點 1.繼承類必須實現抽象基類的方法 2.抽象基類無法例項化 1.why 抽象基類?譬如要開發乙個專案,你要規定專案開發者要去完成某些介面,有些介...
python 中抽象基類簡介
簡介 python中雖然鴨子型別很強大,但鴨子型別也有著不足。具體關於分類可以參照水禽的分類理解。因此,參照水禽的分類學演化,我建議在鴨子型別的基礎上增加白鵝型別 goose typing 白鵝型別指,只要cls是抽象基類,即cls的元類是abc.abcmeta,就可以使用isinstance ob...
python3 抽象基類
1,抽象基類 abstract base class或者 abcs 用於 定義一組必須被類的 鴨子型別 例項實現的方法與屬性,可以繼承抽象基類本身的類作為類的例項,但是必須提供所有適合的方法。from collections.abc import container class testcontai...