为类中的字符串编制索引,Python告诉我直接为类编制索引?
这是给我问题的代码。我收到的错误表明“分数”对象不支持第8行的索引,即使分数对象是字符串?我哪里做错了为类中的字符串编制索引,Python告诉我直接为类编制索引?,python,class,oop,indexing,Python,Class,Oop,Indexing,这是给我问题的代码。我收到的错误表明“分数”对象不支持第8行的索引,即使分数对象是字符串?我哪里做错了 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_fract
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]:
根据您的描述,我认为您的问题是我们的分数是字符串,但第二个分数是分数类型的对象而不是字符串。您的问题最有可能是因为第二个分数是类分数,您的语法假设它是字符串。实际访问类本身中的分数_str变量:
if second_fraction.fraction_str[-1] != our_fraction[1]:
我觉得你有点困惑。分数类不是字符串。您的分数类正在使用not。分数实例将字符串存储为数据字段,实例本身不是字符串 除了Python是rasing之外,第二个字符串似乎是一个分数类,您正在尝试对它进行索引。这行不通,因为分数不是字符串。您需要访问分数实例包含的字符串:
if second_fraction.fraction_str[-1] != our_fraction[-1]:
# code ...
如果希望分数类支持索引,可以重载与索引运算符[]、\uuuu getitem\uuuuu相对应的内置方法:
不过在这里要小心。分数仍然不是字符串。它只是一个支持在其实例上建立索引的类。因此问题在于您直接调用类对象,并希望它返回Fraction.Fraction\u str对象 最好的方法是像这样引用类对象:second_fraction.fraction_str[-1]
或者你可以写一个uu getitem_uu方法你能粘贴你看到的错误代码的整个回溯吗?第二个分数也是类分数还是实际的字符串?如果是前者,也许你想要第二个分数。分数str[-1]。很难说,因为您没有给我们任何代码来实际重现您的问题。哪一行是第8行?第二个分数必须是@rayryeng要求的字符串。谢谢。是的,只是我太傻了。通过在def下添加second_fraction=second_fraction.fraction_str修复了此问题。非常感谢。
class Fraction:
# code...
def __index__(self, slice):
return self.fraction_str[slice]