Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为类中的字符串编制索引,Python告诉我直接为类编制索引?_Python_Class_Oop_Indexing - Fatal编程技术网

为类中的字符串编制索引,Python告诉我直接为类编制索引?

为类中的字符串编制索引,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

这是给我问题的代码。我收到的错误表明“分数”对象不支持第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_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]