Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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 __eq_uuuuu重载方法工作不正常 class-StringClass: 定义初始值(自、str值): self.str_value=str_value 定义(自我、对象): 如果self.str_值==object.str_值: 返回真值 其他: 返回错误 定义(自我): 返回str(self.str_值) 定义报告(自我): 返回str(self.str_值) 定义uu获取项目uu(自身,索引): 返回self.str_值[索引] 定义(自身、对象): 如果self.str_值>object.str_值: 返回真值 其他: 返回错误 类别StringListClass: 定义初始值(自身,大小): self.size=size#str_列表的大小 self.str_list=[None]*size#具有初始大小的列表 self.counter=0#显示列表中已填充的索引 def添加(自身、新项目): 如果self.size-1>=self.counter: self.str\u列表[self.counter]=新的\u项 self.counter+=1 返回打印('Element',new_item',已添加,列表为:',self.str_list[:self.counter]) 其他: 返回打印('Error!Only',self.size',可以将元素添加到列表') def分拣(自我): 更改=真 更改时: 更改=错误 对于范围内的i(len(self)-1): 如果ord(self.str_list[i][0])>ord(self.str_list[i+1][0]): self.str_list[i],self.str_list[i+1]=self.str_list[i+1],self.str_list[i] 更改=真 返回打印('Sorted list:',self.str_list[:len(self)]) def搜索(自身、目标项目): self.sort() 低=0 高=透镜(自身)-1 而低106列表。搜索('如何') 107 108印刷品(a) 搜索中(自身、目标项目) 67中=(低+高)//2 68 --->69如果self.str_列表[mid]==目标_项: 70返回打印('已找到元素',目标项目!') 71 elif目标项9如果self.str_值==object.str_值: 10返回真值 11其他: AttributeError:“str”对象没有属性“str\u值”_Python_Python 3.x - Fatal编程技术网

Python __eq_uuuuu重载方法工作不正常 class-StringClass: 定义初始值(自、str值): self.str_value=str_value 定义(自我、对象): 如果self.str_值==object.str_值: 返回真值 其他: 返回错误 定义(自我): 返回str(self.str_值) 定义报告(自我): 返回str(self.str_值) 定义uu获取项目uu(自身,索引): 返回self.str_值[索引] 定义(自身、对象): 如果self.str_值>object.str_值: 返回真值 其他: 返回错误 类别StringListClass: 定义初始值(自身,大小): self.size=size#str_列表的大小 self.str_list=[None]*size#具有初始大小的列表 self.counter=0#显示列表中已填充的索引 def添加(自身、新项目): 如果self.size-1>=self.counter: self.str\u列表[self.counter]=新的\u项 self.counter+=1 返回打印('Element',new_item',已添加,列表为:',self.str_list[:self.counter]) 其他: 返回打印('Error!Only',self.size',可以将元素添加到列表') def分拣(自我): 更改=真 更改时: 更改=错误 对于范围内的i(len(self)-1): 如果ord(self.str_list[i][0])>ord(self.str_list[i+1][0]): self.str_list[i],self.str_list[i+1]=self.str_list[i+1],self.str_list[i] 更改=真 返回打印('Sorted list:',self.str_list[:len(self)]) def搜索(自身、目标项目): self.sort() 低=0 高=透镜(自身)-1 而低106列表。搜索('如何') 107 108印刷品(a) 搜索中(自身、目标项目) 67中=(低+高)//2 68 --->69如果self.str_列表[mid]==目标_项: 70返回打印('已找到元素',目标项目!') 71 elif目标项9如果self.str_值==object.str_值: 10返回真值 11其他: AttributeError:“str”对象没有属性“str\u值”

Python __eq_uuuuu重载方法工作不正常 class-StringClass: 定义初始值(自、str值): self.str_value=str_value 定义(自我、对象): 如果self.str_值==object.str_值: 返回真值 其他: 返回错误 定义(自我): 返回str(self.str_值) 定义报告(自我): 返回str(self.str_值) 定义uu获取项目uu(自身,索引): 返回self.str_值[索引] 定义(自身、对象): 如果self.str_值>object.str_值: 返回真值 其他: 返回错误 类别StringListClass: 定义初始值(自身,大小): self.size=size#str_列表的大小 self.str_list=[None]*size#具有初始大小的列表 self.counter=0#显示列表中已填充的索引 def添加(自身、新项目): 如果self.size-1>=self.counter: self.str\u列表[self.counter]=新的\u项 self.counter+=1 返回打印('Element',new_item',已添加,列表为:',self.str_list[:self.counter]) 其他: 返回打印('Error!Only',self.size',可以将元素添加到列表') def分拣(自我): 更改=真 更改时: 更改=错误 对于范围内的i(len(self)-1): 如果ord(self.str_list[i][0])>ord(self.str_list[i+1][0]): self.str_list[i],self.str_list[i+1]=self.str_list[i+1],self.str_list[i] 更改=真 返回打印('Sorted list:',self.str_list[:len(self)]) def搜索(自身、目标项目): self.sort() 低=0 高=透镜(自身)-1 而低106列表。搜索('如何') 107 108印刷品(a) 搜索中(自身、目标项目) 67中=(低+高)//2 68 --->69如果self.str_列表[mid]==目标_项: 70返回打印('已找到元素',目标项目!') 71 elif目标项9如果self.str_值==object.str_值: 10返回真值 11其他: AttributeError:“str”对象没有属性“str\u值”,python,python-3.x,Python,Python 3.x,你能解释一下StringClass中的_; eq _;方法有什么错吗 您需要比较两个相同类型的项目。您尝试比较StringClass和内置str。当python试图读取内置字符串的属性str_value时,就会出现故障点,而该属性是python没有的 而是将StringClass传递到search函数中 AttributeError Traceback (most recent call last) <ipython-input-40-

你能解释一下StringClass中的_; eq _;方法有什么错吗

您需要比较两个相同类型的项目。您尝试比较
StringClass
和内置
str
。当python试图读取内置字符串的属性
str_value
时,就会出现故障点,而该属性是python没有的

而是将
StringClass
传递到
search
函数中

AttributeError                            Traceback (most recent call last)
<ipython-input-40-49ee6e8bf4c7> in <module>()
    104 
    105 list.sort()
--> 106 list.search('how')
    107 
    108 print(a)

<ipython-input-40-49ee6e8bf4c7> in search(self, target_item)
     67             mid = (low + high) // 2
     68 
---> 69             if self.str_list [mid] == target_item:
     70                 return print ( 'The element', target_item, 'has been found!' )
     71             elif target_item < self.str_list [mid]:

<ipython-input-40-49ee6e8bf4c7> in __eq__(self, object)
      7     def __eq__(self, object):
      8 
----> 9         if self.str_value == object.str_value:
     10             return True
     11         else:

AttributeError: 'str' object has no attribute 'str_value'
或者在
search
中执行该转换,尽管这意味着您不能将
StringClass
传递到函数中

AttributeError                            Traceback (most recent call last)
<ipython-input-40-49ee6e8bf4c7> in <module>()
    104 
    105 list.sort()
--> 106 list.search('how')
    107 
    108 print(a)

<ipython-input-40-49ee6e8bf4c7> in search(self, target_item)
     67             mid = (low + high) // 2
     68 
---> 69             if self.str_list [mid] == target_item:
     70                 return print ( 'The element', target_item, 'has been found!' )
     71             elif target_item < self.str_list [mid]:

<ipython-input-40-49ee6e8bf4c7> in __eq__(self, object)
      7     def __eq__(self, object):
      8 
----> 9         if self.str_value == object.str_value:
     10             return True
     11         else:

AttributeError: 'str' object has no attribute 'str_value'

另外,您不应该调用任何变量
list
。它是一个内置类型,在声明之后,您隐藏了
列表的内置版本

您创建了一个
StringClass
实例列表,但您在其中搜索了一个
str
。(为什么有这些类呢?)错误消息实际上很有描述性:您使用
'how'
调用搜索,这是一个
str
。字符串没有
.str\u value
属性(您的字符串类有),您的
.eq\uu()
尝试访问该属性。是否可以在类StringClass的eq方法中执行转换?您可以在任何地方执行转换。虽然我觉得那不是个好地方。主要是因为它限制了
\uuuu eq\uuu
函数的允许输入,并改变了它的语义。任何使用它的人都希望
\uuu eq\uuuu
对同类进行比较,
StringClass
StringClass
进行比较。如果突然之间它必须是左边的
StringClass
和右边的
str
,那么当你忘记了这个区别时,你可能会遇到一些神秘的错误。
list.search(StringClass('how'))