2007年5月8日星期二

在 Python 中使用抽象类和抽象方法的简易方案

尝试在 Python 文档中寻找抽象类和抽象方法的说明吗?别浪费太多时间,事实上,那里没有。许多 Python 的拥趸认为,非要给 Python 加上抽象类或者抽象方法,是不符合 Pythonic 精神的。

不过,如果你出于某些原因,需要定义抽象类或者抽象方法,这里有一些简单的解决办法可供参考。

方法一:简单的解决方案

使用上类似:

>>> obj1 = B()
B
>>> obj2 = A()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "<input>", line 2, in __init__
  File "<input>", line 2, in abstract
NotImplementedError: abstract

方法二:稍复杂但更灵活的解决方案

使用上类似:

>>> obj1 = B()
A
B
>>> obj2 = A()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "<input>", line 2, in __init__
  File "<input>", line 2, in abstract
NotImplementedError: abstract

更简单的解决方案

The Python IAQ(少有回答的 Python 问题)上给出了一个更简单的方法以及说明。这里是地址:
http://norvig.com/python-iaq.html
这里是中文版的翻译:
http://www.chenwy.com/python-iaq-cn.html

更完整的解决方案

在 ActiveState Programmer Network 上的 Python Cookbook 中,Ivo Timmermans 提出了一个比较完整的抽象类和抽象方法的解决方案。这里是地址:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/266468


转载请注明“转自粲言堂 http://xuecan.blogspot.com/”。


Copyright (C) 2007, XUE Can.

Creative Commons License 本博客作品(包括但不限于文字、图像、音频、视频以及动画),采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。 转载请注明“转自粲言堂 http://xuecan.blogspot.com/”。