-2

我正在构建一个字符串类,它的行为类似于常规字符串类,除了加法运算符返回两个字符串的长度之和而不是连接它们。然后乘法运算符返回两个字符串长度的乘积。所以我打算做

   class myStr(string):
         def __add__(self):
             return len(string) + len (input)

至少这是我第一部分的内容,但这显然是不正确的。有人可以帮我纠正它。

4

2 回答 2

4

您需要派生自str,并且可以使用len(self)来获取当前实例的长度。您还需要为运算符__add__的另一个操作数提供参数+

class myStr(str):
    def __add__(self, other):
        return len(self) + len(other)

演示:

>>> class myStr(str):
...     def __add__(self, other):
...         return len(self) + len(other)
... 
>>> foo = myStr('foo')
>>> foo
'foo'
>>> foo + 'bar'
6
于 2013-06-05T21:58:59.053 回答
1

string不是一个类。这不是什么*。除非len(string)您定义string.

其次,__add__没有input参数。

您需要解决这两个问题。

*您可以导入一个名为 的模块string,但它不仅仅存在于全局范围内。

于 2013-06-05T21:59:22.710 回答