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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.