为什么str在Python中没有-uuradd\uuu方法?

2024-05-23 21:07:51 发布

您现在位置:Python中文网/ 问答频道 /正文

str还有其他方法,比如u rmod_uu、\uu rsub_uuu或uuu rmul_u

int确实有一个

奇怪,我想知道为什么。在

当第一项具有add方法时调用的示例radd being:

>>> class STR(str):
...     def __radd__(self, other):
...             print "jeje"
...             return other.__add__(self)
... 
>>> 'aaaaa' + STR('bbbbb')
jeje
'aaaaabbbbb'

Tags: 方法selfadd示例uuuintotheruu
2条回答

类型只定义它们使用的方法。由于可以添加到字符串中的唯一对象是其他字符串或unicode对象,因此不需要常规的__radd__方法。__rmul__允许您复制字符串:

>>> 4 * 'abc'
'abcabcabcabc'

我不知道为什么需要__rmod__,但它与格式有关。也许它简化了使用单个参数格式化的实现,如"Hello %s" % 'world'。我不确定。与您的断言相反,str对象上没有__rsub__。在

简言之,这些方法只有在它们实际执行某些操作时才被定义。在

当加法的第一项不实现__add__时,使用__radd__。在int的情况下,加法是由其数学定义定义的,因此int试图将另一项强制为一个数。在

使用str,没有这样定义良好的含义,python的开发人员已经决定,没有必要使用某种东西+“字符串”。在

相关问题 更多 >