【发布时间】:2014-04-04 09:31:34
【问题描述】:
我的问题与Is enforcing an abstract method implementation unpythonic? 这个问题有关。我在 python 中使用抽象类,但我意识到没有什么可以阻止用户实现一个函数,该函数采用与基类完全不同的参数。因此,我可能必须检查参数的类型。这不是很不合情理吗?
人们如何在python中使用抽象类?
【问题讨论】:
标签: python
我的问题与Is enforcing an abstract method implementation unpythonic? 这个问题有关。我在 python 中使用抽象类,但我意识到没有什么可以阻止用户实现一个函数,该函数采用与基类完全不同的参数。因此,我可能必须检查参数的类型。这不是很不合情理吗?
人们如何在python中使用抽象类?
【问题讨论】:
标签: python
简短的回答:是的,它是非pythonic。拥有一个抽象基类来检查您的实现的完整性可能仍然有意义。但是pythonic的方法主要是duck-typing,即假设您使用的对象满足您期望的规范。只需在文档中明确说明这些期望即可。
实际上,您通常不会进行大量此类安全检查。即使您会检查类型,仍然可以在运行时伪造它。它还允许您的代码的用户更灵活地了解他们传递给您的代码的对象类型。每次都必须实现 ABC 会使他们的代码非常混乱。
【讨论】: