gpt4 book ai didi

class - 神秘的 python 错误 'classobj' 对象没有属性 '__getitem__'。为什么我得到这个?

转载 作者:行者123 更新时间:2023-12-04 18:06:07 24 4
gpt4 key购买 nike

我真的希望我能在这里更具体一些,但我已经通读了相关问题,但似乎没有一个与我在这里遇到的问题有关,而且我也不了解我遇到的问题。这是一个家庭作业,所以我犹豫要不要把我所有的程序代码都贴出来,这是一个精简版。编译这个,你会看到这个问题。

import copy

class Ordering:

def __init__(self, tuples):

self.pairs = copy.deepcopy(tuples)
self.sorted = []
self.unsorted = []

for x in self.pairs:
self.addUnsorted(left(x))
self.addUnsorted(right(x))

def addUnsorted(self, item):

isPresent = False

for x in self.unsorted:
if x == item:
isPresent = True

if isPresent == False:
self.unsorted.append(left(item))

我在这里创建了一个类 Ordering,它采用 [('A', 'B'), ('C', 'B'), ('D', 'A')] 形式的列表(其中 a 必须在 b 之前,c 必须在 b 之前,等等)并且应该以部分有序的形式返回它。我正在调试我的代码以查看它是否正常工作,但由于返回的错误消息,我还不能这样做。

当我在终端中输入以下内容时:

print Ordering[('A', 'B'), ('C', 'B'), ('D', 'A')]

我收到以下错误信息:

Traceback (most recent call last): File "<stdin>", line 1, in (module) Type Error: 'classobj' object has no attribute '__getitem__'

这是为什么?!

最佳答案

要访问列表的元素,请使用方括号。要实例化一个类,请使用括号。

换句话说,不要使用:

print Ordering[('A', 'B'), ('C', 'B'), ('D', 'A')]

使用:

print Ordering((('A', 'B'), ('C', 'B'), ('D', 'A')))

这会从代码的更深处产生另一个错误,但由于这是一项家庭作业,我会让你稍微考虑一下。

如何使用__getitem__:

作为一个最小的例子,下面是一个通过 __getitem__ 返回正方形的类:

class HasItems(object):
def __getitem__(self, key):
return key**2

运行起来是这样的:

>>> a = HasItems()
>>> a[4]
16

注意方括号。

关于class - 神秘的 python 错误 'classobj' 对象没有属性 '__getitem__'。为什么我得到这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com