我正在构建一个字符串Class,其行为类似于常规字符串类,除了add运算符返回两个字符串的长度之和而不是连接它们。然后乘法运算符返回两个字符串长度的乘积。所以我打算做
class myStr(string):
def __add__(self):
return len(string) + len (input)
至少这是我对第一部分的看法,但这显然是不正确的。有人可以帮我纠正吗。
答案 0 :(得分: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
答案 1 :(得分:1)
string
不是一个班级。这不是什么*。除非您定义len(string)
,否则string
无效。
其次,__add__
没有input
参数。
您需要解决这两个问题。
*
您可以导入一个名为string
的模块,但它不是仅存在于全局范围内的模块。