gpt4 book ai didi

python - 'instancemethod' 对象没有带有类变量的属性 '__getitem__'

转载 作者:太空狗 更新时间:2023-10-29 21:31:48 26 4
gpt4 key购买 nike

我正在尝试创建一个 python 类来使用我的 Raspberry Pi 控制步进电机。它主要有效,但是每当我将列表定义为类变量时,我都会收到“'instancemethod' object has no attribute '__getitem__'”错误。错误消息将这段代码列为罪魁祸首但是如果 seq[self.StepCounter][pin]!=0: 我看不出有什么问题。如果我将它定义为实例变量或全局变量,它就会起作用。这是我的代码: 将 RPi.GPIO 导入为 GPIO 导入时间 调试=真

class stepper:
clockwise = []
clockwise = range(0,4)
clockwise[0] = [1,0,0,0]
clockwise[1] = [0,1,0,0]
clockwise[2] = [0,0,1,0]
clockwise[3] = [0,0,0,1]
def __init__(self,pin1,pin2,pin3,pin4):
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
self.pin1 = pin1
self.pin2 = pin2
self.pin3 = pin3
self.pin4 = pin4
self.StepCounter = 0
self.pinarray = [pin1,pin2,pin3,pin4]
for pin in self.pinarray:
if debug == True:
print "Setup pin " + str(pin)
GPIO.setup(pin,GPIO.OUT)
GPIO.output(pin, False)
self.stepNum = 512.0
self.coilNum = 4.0

def setup(self,stepNum,coilNum):
self.stepNum = float(stepNum)
self.coilNum = float(coilNum)
self.partNum = self.coilNum * self.stepNum

def clockwise(self,speed):
seq = stepper.clockwise
self.WaitTime = (1.0 / (self.stepNum * self.coilNum)) * speed
for pin in range(0, 4):
xpin = self.pinarray[pin]
if seq[self.StepCounter][pin]!=0:
GPIO.output(xpin, True)
else:
GPIO.output(xpin, False)
self.StepCounter += 1
if (self.StepCounter==len(seq)):
self.StepCounter = 0
if (self.StepCounter<0):
self.StepCounter = len(seq)
time.sleep(self.WaitTime)

print "Adding Motor Instance"
motor = stepper(24,25,8,7)
print "Spinning Motor"
while "True":
motor.clockwise(5)

请有人告诉我它有什么问题并解释原因。谢谢

最佳答案

你没有发布完整的回溯,但我可以猜测:

def clockwise(self,speed):
seq = stepper.clockwise
self.WaitTime = (1.0 / (self.stepNum * self.coilNum)) * speed
for pin in range(0, 4):
xpin = self.pinarray[pin]
if seq[self.StepCounter][pin]!=0:

您将 seq 设置为等于第一行的方法 stepper.clockwise。几行之后,您尝试对其进行索引:seq[self.StepCounter]。但是获取方法的第 self.StepCounter 元素意味着什么?

没什么,因为:

'instancemethod' object has no attribute '__getitem__'

你不应该将 clockwise 既用作列表的名称又用作方法的名称;只有最后执行的定义会保留,所以当您到达 seq = stepper.clockwise 时,它是方法,而不是列表。

关于python - 'instancemethod' 对象没有带有类变量的属性 '__getitem__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21365521/

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