DaSch Fehler Thread

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

Code: Alles auswählen

#!/usr/bin/python
import sys
class costumer:
    def __init__(self, atractivity, persons, publicity):
        #atractivity, publicity 0<x<1
        #persons, persons in range
        costumers=-1
        if 0<atractivity<1 and 0<publicity<1:
            print("A an P are OK")
            costumers=((atractivity+publicity)/2)*persons
        else:
            print("Error with A or P")
        return costumers
print costumer(None,0.4,100,0.5)
Ich krieg hier folgenden Fehler
Traceback (most recent call last):
File "costumer.py", line 14, in ?
print costumer(None,0.4,100,0.5)
TypeError: __init__() takes exactly 4 arguments (5 given)
Könnt ihr mir das erklären?
Zuletzt geändert von DaSch am Samstag 31. März 2007, 16:36, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gleich vorweg: ich habe den Thread verschoben. Könntest du dem Thread auch noch einen besseren Namen geben?

DaSch hat geschrieben:Könnt ihr mir das erklären?
Ja, der erste Parameter bei Klassen wird implizit übergeben. Also musst du das None weglassen beim Aufruf. Überhaupt sollten Klassennamen mit Großbuchstaben beginnen, so erkennt man einfacher dass da eine Klasseninstanz gebildet wird und keine Funktion aufgerufen wird.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

kann mir jemand erklären was mir diese Fehlermeldung sagt
NameError: global name '_' is not defined
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

DaSch hat geschrieben:kann mir jemand erklären was mir diese Fehlermeldung sagt
NameError: global name '_' is not defined
Ist doch ganz klar: Der name "_" ist nicht definiert.

Der Unterstrich wird als Name im interaktiven Interpreter (bspw. IDLE) verwendet, damit man sich den letzten Rückgabewert einer Funktion anzeigen lassen kann:

Code: Alles auswählen

>>>def returner():
       return 4
>>>returner()
4
>>>_
4

Im "normalen" Interpreter hingegen, wird der Rückgabewert einer Funktion nach ihrem Aufruf nicht implizit an den Namen "_" gebunden, sondern man muss dies selber tun (wenn man denn will):

Code: Alles auswählen

def returner():
    return 4
my_name = returner()
Der Unterstrich als Name hat also in echten Python-Scripts nichts zu suchen, nur in der interaktiven Umgebung.

EDIT: Was mir an deinem Code noch auffällt: Ein "return" macht in einem Konstruktor "__init__(...)" keinen Sinn. Vielleicht solltest du dir moch mal einige Grundlagen zu OOP und Python anschauen.
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

ja ich bin grad dabei mir das so langsam zu erarbeiten, danke trotzdem für deine Erklärung hat mir schon gut weitergeholfen
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

kann maneiner Funktion irgendwie sagen dass sie warten soll, also dass die quasi nichts tut und nach einer bestimmten Zeit einfach wieder weitermacht?
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Meinst du vl

Code: Alles auswählen

import time
time.sleep(x)
?
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

thx das hab ich jetzt gerade endlich auch gefunden :)
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

Code: Alles auswählen

        progress = SendMail(self)
        progress.Show()
        progressbar = progress.gauge_send
        progressbar.Show()
        time.sleep(1)
        progressbar.SetValue(10)
        time.sleep(1)
        progressbar.SetValue(20)
        time.sleep(1)
        progressbar.SetValue(30)
        time.sleep(1)
        progressbar.SetValue(50)
        time.sleep(1)
        progressbar.SetValue(100)
Also ich hab hier so ein Stück aus meinem Prog da sollte erstmal das Fenster mit dem Mailer und die Progressbar angezeigt werden und dann sollte sich da der Wert halt ändern. Aber irgendwie funktioniert das nicht. Der öffnet das Fenster erst ganz am Ende
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

also hab nun die Lösung selbst gefunden
wx.Dialog.RequestUserAttention(progress)
das holt das Fenster nach vorne so dass man es sieht, dass muss man nach jeder ändernung einfügen.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Ich glaube nicht, dass das die richtige Funktion ist.

Du suchst wohl eher wx.SafeYield().
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

was ist daran anders, also so wie ich des jetzt gemacht habt funktioniert des zumindest so wie ich es haben will
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

Xlib: unexpected async reply (sequence 0x352)!
Was ist das für ein Fehler? Ist das ein Bug in python oder im XServer oder sowas?
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

DaSch hat geschrieben:
Xlib: unexpected async reply (sequence 0x352)!
Was ist das für ein Fehler? Ist das ein Bug in python oder im XServer oder sowas?
Ich denke mal das 0x352 ist ein Zeichen (Umlaut oder so...), was nicht richtig dargestellt wird(werden kann).
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

ich hab aber in dem Prog keine Umlaute
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wo genau tritt der Fehler denn auf? Bisher hast du uns nur eine Zeile gegeben und daraus sollen wir schlau werden. So einfach ist das aber nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
DaSch
User
Beiträge: 72
Registriert: Mittwoch 28. März 2007, 20:04
Kontaktdaten:

also der Fehler tritt im Zusammenhang mit wxPython auf und bedeute wohl soweit ich das erahnen kann dass ein Fenster zum zweiten mal initialisiert wurde
Antworten