【发布时间】:2015-06-18 11:30:24
【问题描述】:
有没有办法为不同版本的python定义不同的函数(具有相同的主体)?
具体来说,对于 python 2.7 定义:
def __unicode__(self):
对于 python 3 定义:
def __str__(self):
但两者都将具有相同的代码/正文。两者都必须是类的成员。
【问题讨论】:
-
为什么不总是定义两者并让它们调用包含实际实现的第三个函数?
-
@deceze 因为它不起作用。
-
@deceze:
__str__的接口在 Python 2 和 3 之间发生了变化。在 Python 2 中,它必须返回字节,在 Python 3 中,它必须返回 Unicode。 -
@Martijn 然后“适配器”方法
__unicode__和/或__str__可以进行这种简单的转换。这基本上就是答案的作用。 -
@deceze
__str__在 Python 2 和 Python 3 中都存在,其返回值的定义必须不同。从本质上讲,这会将我的代码在每个初始化时间执行一次的条件更改为每次调用一次,几乎不再方便了。