Python - 'bytes' object has no attribute

Gast #4480109
Lesenswert?

Hi,

kennt einer von euch diesen Fehler in Python?

bytes' object has no attribute 'function'

Ich versuche hier eine bytes-Variable an eine Funktion zu übergeben, 
teile zu extrahieren und als integer zurück zu geben. Der oben genannte 
Fehler tritt dann bei mir auf.

Aus dem Hauptprogramm:

variable=b'0000'
....
        if (datei.function(variable)) > 0:
            GPIO.output (14,GPIO.HIGH)

Aus dem Unterprogramm:

def function (variable):
    output=(int(variable[0:1],2))
    return Dir

Vielen Dank für die Hilfe,
Jule
#4480139
Lesenswert?

Also, ich mauss da mal den Glaskugel polieren...

Ich vermute dass:
1) der Aufruf von function in einer anderen Datei steht als seine 
Definition (wg. "Hauptprogramm" und "Unterprogramm"

1a) dieses "Unterprogramm" in einer Datei namens "datei.py" 
untergebracht ist

1b) du vergessen hast im "Hauptprogramm" ein "import datei" einzufügen.

2) function eher "output" zurückliefern soll als "Dir"
Gast #4480149
Lesenswert?

Hey,

danke erstmal.
Hier nochmal die relevanten Auszüge aus dem unveränderten Programm. 
Hatte versucht zu vereinfachen.


Hauptprogramm:

import ubit

...
data = b'0000000000000000000000000000000'

...
        if (ubit.dir_1(data)) > 0:
            GPIO.output (14,GPIO.HIGH)
        else:
            GPIO.output (14,GPIO.LOW)

das Unterprogramm:

def dir_1 (data):
    Dir=(int(data[0:1],2))
    return Dir
Gast #4480288
Lesenswert?

Julia schrieb:
> data = b'0000000000000000000000000000000'
>
> ...
>         if (ubit.dir_1(data)) > 0:
>             GPIO.output (14,GPIO.HIGH)
>         else:
>             GPIO.output (14,GPIO.LOW)
>
> das Unterprogramm:
>
> def dir_1 (data):
>     Dir=(int(data[0:1],2))
>     return Dir

Man sollte auch überlegen, ob es sinnvoll ist in Python auf "Bit-Ebene" 
zu arbeiten. Die OO-Programierung bietet da besser lesbare Möglichkeiten 
und die Performance wird sicher auch nicht besser.

Ich weiß auch nicht was dass sein soll:

data = b'0000000000000000000000000000000'

In Python wird eine binäre Zahl als 0b.... geschrieben.
Gast #4480374
Lesenswert?

Karl schrieb:
> data = b'0000000000000000000000000000000'
>
> In Python wird eine binäre Zahl als 0b.... geschrieben.
Warum denkt immer alle Welt das ein b'' in Python was mit binaer zu tun 
haette?
b'' bedeutet (in Python 3!) Byte-String, wohingegen das normale '' ein 
Unicode-String ist. Viele Funktionen, z.B. socket.send oder serial.write 
wollen einen Byte-String, keinen Unicode-String.
Erstmal schlau machen, dann schreiben...

Karl schrieb:
> Man sollte auch überlegen, ob es sinnvoll ist in Python auf "Bit-Ebene"
> zu arbeiten.
Sieht mir nach nem RPi aus. Ja, macht also Sinn.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren