0

我正在尝试接收名为eeprom的列表的某些内容,并将它们保存在名为bytes的列表下。

class Parameter (object):
    def __init__ (self, eeprom, *address):
        self.eeprom = eeprom
        self.bytes = list()
        for a in address:
            a = int(a, 16)
            byte = eeprom[a]                 # here lies the problem
            self.bytes.append(byte)

sthg = Parameter(eeprom, "0x00B9", "0x00BA")

每当我运行脚本时,我都会收到以下错误:

TypeError: 'int' object has no attribute '__getitem__'

有谁知道为什么会这样?如果我在它工作的解释器上写这个,只有当我将它作为一个模块运行时,我才会收到这个错误。

4

3 回答 3

3

当您实例化 Parameter 时,您很可能会为 eeprom 参数而不是列表传递一个 int。你可能正在做相当于

sthg = Parameter(1, "0x00B9", "0x00BA")

当你应该做

sthg = Parameter([1,2,3,4], "0x00B9", "0x00BA")
于 2013-07-03T12:11:58.383 回答
3

当您实例化您的类时,您应该将 eeprom 作为列表参数传递,但您将它作为 int 参数传递。int 对象没有任何__getitem__()功能,这就是为什么您无法使用[](索引)访问它的原因,因此您应该将任何可迭代作为 eeprom 参数..

于 2013-07-03T12:23:35.937 回答
0
class Parameter (object):
    def __init__ (self, eeprom, *address):
        self.eeprom = eeprom
        self.bytes = list()
        for a in address:
            a = int(a,16)
            byte = eeprom[a]                 # here lies the problem
            self.bytes.append(byte)


eeprom = [1,2,3,4,5,6,7,8,9,10,11]
sthg = Parameter(eeprom, "0x0009")

eeprom 应该是 List object not integer 一个整数

例子:

eeprom = [1,2,3,4,5,6,7,8,9,10,11]
于 2013-07-03T13:24:51.800 回答