'instancemethod' - Objekt hat kein Attribut '__getitem__' mit der class-Variablen

Ich versuche zu schaffen, eine python-Klasse zur Steuerung von Schrittmotoren mit meinem Raspberry Pi. Es funktioniert auch meistens, aber ich erhalte immer ein "'instancemethod' - Objekt hat kein Attribut '__getitem__' Fehlermeldung, wenn ich eine Liste definiert, wie eine Klasse variable. Die Fehlermeldung listet dieses Stück code als der Schuldige, aber ich kann nicht sehen, nichts falsch mit ihm, wenn seq[self.StepCounter][pin]!=0:. Es wird funktionieren, wenn ich es definieren als eine Instanz-variable oder eine Globale variable, obwohl.
Das ist mein code:
import RPi.GPIO as GPIO
import time
debug = True

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)

Könnte bitte jemand mir sagen, was ist falsch mit ihm und erklären Sie, warum. Dank

Nicht dass dies Problem zu beheben, aber warum initiieren Sie im Uhrzeigersinn, so seltsam? Nur tun Sie es in einer Anweisung 😛
können Sie uns die genaue vollständige Fehlermeldung?
und initialisieren Sie bitte im Uhrzeigersinn : clockwise = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]] statt Ihrem Chaos! 😉
Sie haben zwei Attribute namens clockwise eine Liste und eine Methode.

InformationsquelleAutor SquarePie | 2014-01-26

Schreibe einen Kommentar