这是给我问题的代码。我收到的错误表明“'Fraction'对象不支持索引”在第8行,即使Fraction对象是一个字符串?我哪里错了?
class Fraction:
def __init__(self, x, y):
self.fraction_str = str(x) + '/' + str(y)
def add(self, second_fraction):
our_fraction = self.fraction_str
if second_fraction[-1] != our_fraction[-1]:
答案 0 :(得分:0)
根据你的描述,我认为你的问题是our_fraction是一个字符串,但second_fraction是Fraction类型的对象而不是字符串。
答案 1 :(得分:0)
您的问题很可能是由于second_fraction
属于Fraction
类,您的语法假定它是一个字符串。实际上访问类本身中的fraction_str
变量:
if second_fraction.fraction_str[-1] != our_fraction[1]:
答案 2 :(得分:0)
我觉得你在这里有点困惑。您的Fraction
类不是字符串。您的Fraction
班级正在使用composition而不是inheritance。 Fraction
实例将字符串存储为数据字段,其实例不是字符串。
从异常Python开始,second_string
似乎是一个Fraction
类,你正试图将其编入索引。这不会起作用,因为Fraction
不是字符串。您需要访问Fraction
实例包含的字符串:
if second_fraction.fraction_str[-1] != our_fraction[-1]:
# code ...
如果,您希望Fraction
类支持索引,则可以重载与索引运算符[]
,__getitem__
对应的内置方法:
class Fraction:
# code...
def __index__(self, slice):
return self.fraction_str[slice]
虽然要小心。 Fraction
仍然不是字符串。它只是一个支持对其实例进行索引的类。
答案 3 :(得分:0)
所以问题是你直接调用Class对象并希望它返回Fraction.fraction_str
对象。
最好的方法是像这样引用类对象:second_fraction.fraction_str[-1]
或者你可以写一个__getitem__
方法