Nadawanie nazwy wyrzuca blad

Nadawanie nazwy wyrzuca blad
BE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 57
0

Witam,
na studia dostalem zadanie do poprawy pewien kod, ktory szczerze mowiac nie bardzo rozumiem, oraz nie rozumiem jak go poprawic, w kazdym razie blad pojawia sie dla ponizszego kodu:

Kopiuj
class Klient:
    
    s = None
    adres = None
    port = None
    nazwa = None
    def __init__(self, adres, port):
        self.adres = adres
        self.port = port
    
    def start(self):
        try:
            self.polacz()
        except:
            print "Problem przy laczeniu z serwerem."
            exit(0)
            nazwa = raw_input("Podaj swoja nazwe(moze zawierac tylko znaki z angielskiego alfabetu\n")
        self.c.send(bytearray(nazwa, 'utf-8'))
        self.petla()

zwraca mi blad : line 96, in start
self.c.send(bytearray(nazwa, 'utf-8'))
AttributeError: Klient instance has no attribute 'c'

z tym ze na samym poczatku mam zdefiniowane 'c' jako polaczenie :

Kopiuj
def sluchaj(s, lista):
    while True:
        c, addr = s.accept()
        gracz = {}
        gracz["conn"] = c

wiec nie wiem dlaczego to wywala blad :(

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Pole c klasy Klient nie jest nigdzie ustawiane - cały czas jest nullem.

BE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 57
0

To wiem bo nawet pisalem to wyzej, tylko jak zdefiniowac to C zeby dzialalo to pojecia nie mam :P

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

No ale twoje c to jest jakaś zmienna lokalna w jakieś funkcji z d**y i nie ma NIC wspólnego z klasą Klient.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Musisz ustawić pole tej klasy, a nie jakąś tam sobie zmienną lokalną.
Wiesz, co to jest zmienna lokalna oraz pole klasy?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.