我试图创建一个行为类似于str的类diffStr,不同之处在于,当用户试图将两个字符串相加或相乘时,输出分别是每个相加或相乘的字符串的长度。
我的密码-
class diffStr:
def __init__(self, str1):
self.str1 = str1
def __add__(self, other):
return len(self.str1) + len(other.str1)
def __mul__(self, other):
return len(self.str1) * len(other.str1)
x = diffStr('hi')
print(x+'hello') # supposed to print 7 (2+5)
print(x*'hello') # supposed to print 10 (2*5)
我确信我做错了什么,因为当我尝试运行代码时,我一直收到以下错误消息-AttributeError: 'str' object has no attribute 'str1'
正如你可能会告诉,我是一个新手在编程和我最好的学习。我会感谢任何帮助,在修复这一块代码。谢谢。
1条答案
按热度按时间fhg3lkii1#
对于
x+'hello'
,您将'hello'
的str
对象作为other
参数传递给x.__add__
,x.__add__
将计算other.str1
,由于str
对象没有str1
属性,因此会得到上述异常。有一种更全面的方法可以帮助
+
和*
运算符同时适用于str
和diffStr
操作数,即为diffStr
实现__len__
方法,这样您就可以简单地对other
参数调用len
函数,而不管其类型如何:这将输出: