python抽象基類用法實例分析
本文實例講述了python抽象基類用法。分享給大家供大家參考。具體如下:
定義抽象類,需要使用abc模塊,該模塊定義了一個元類(ABCMeata),和裝飾器 @abstractmethod, @abstractproperty
如果要實例化繼承了Foo 的子類,子類必須實現(xiàn)了Foo所有的抽象方法(跟java一樣),否則實例化報錯。
抽象類不能直接實例化
#!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)
抽象基類支持對已經(jīng)存在的類進(jìn)行注冊,使其屬于該基類,使用register()方法
向抽象基類注冊某個類,對于注冊類中的實例,涉及后續(xù)基類的類檢測操作比如(isinstance, issubclass) 將返回True,向抽象基類注冊某個類時,不會檢查該類是否實現(xiàn)了任何抽象方法或特性,這種注冊過程只會影響類型檢查
class Crok(object): def spam(self, a, c): print "gork.span" Foo.register(Grok)
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
Python 格式化打印json數(shù)據(jù)方法(展開狀態(tài))
今天小編就為大家分享一篇Python 格式化打印json數(shù)據(jù)方法(展開狀態(tài)),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python基于matplotlib實現(xiàn)繪制三維圖形功能示例
這篇文章主要介紹了Python基于matplotlib實現(xiàn)繪制三維圖形功能,涉及Python使用matplotlib模塊進(jìn)行三維圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-01-01使用python調(diào)用瀏覽器并打開一個網(wǎng)址的例子
這篇文章主要介紹了使用python調(diào)用瀏覽器并打開一個網(wǎng)址的例子,使用webbrowser模塊實現(xiàn),需要的朋友可以參考下2014-06-06Python實現(xiàn)在Word中創(chuàng)建表格并填入數(shù)據(jù)與圖片
在Word中,表格是一個強(qiáng)大的工具,本文主要為大家介紹了如何使用Python在Word中創(chuàng)建表格并填入數(shù)據(jù)、圖片,以及設(shè)置表格樣式等,感興趣的可以了解下2024-03-03Pandas在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中的應(yīng)用及優(yōu)勢
Pandas是Python中用于數(shù)據(jù)處理和數(shù)據(jù)分析的庫,它提供了靈活的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作工具,包括Series和DataFrame等。Pandas還支持大量數(shù)據(jù)操作和數(shù)據(jù)分析功能,包括數(shù)據(jù)清洗、轉(zhuǎn)換、篩選、聚合、透視表、時間序列分析等2023-04-04