我有一个将由客户端代码实现的“接口”:
class Runner:
def run(self):
pass
run
通常应该返回 adocutils
node
但因为最常见的情况是纯文本,调用者允许run
返回一个字符串,该字符串将使用检查type()
并转换为 a node
。
然而,按照我理解“Pythonic”的方式,这不是“Pythonic”,因为检查type()
某物的“行为”不会让它“成为”一种类型——即“Pythonic”代码应该使用鸭子类型。
我考虑过
def run_str(self):
pass
def run_node(self):
return make_node(self.run_str())
但我不在乎这个,因为它把不那么有趣的返回类型放在名称中;这让人分心。
有什么我错过的想法吗?此外,我的“坏”系统是否会在路上遇到问题(对我来说似乎或多或少是安全的)?