Seite 1 von 1

Nach Modularen Aufbau ASCII Fehler?

Verfasst: Sonntag 6. Mai 2012, 15:50
von ShoxX
Hallo

Ich habe zwei Klassen in einer Datei die auch beide funktionieren,
wenn ich jetzt einen Modularen Aufbau mache und beide Klassen trenne und sie in eigene Dateien packe bekomme ich immer diesen Fehler:
Traceback (most recent call last):
File "C:/Python27/Ride.py", line 1, in <module>
from Train import Train
File "C:/Python27\Train.py", line 19
SyntaxError: Non-ASCII character '\xe4' in file C:/Python27\Train.py on line 19, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Denn bekomme ich aber nicht wenn ich beide Klassen zusammen habe,
hier mal meine beiden Klassen:
Train.py

Code: Alles auswählen

class Train(object):
  """ Klasse definiert einen Zug """
  
  def __init__(self,__seats):
    self.__seats = __seats
    self.__speed = 0
    self.__passengers = 0

  def getPassengers(self):
      return self.__passengers

  def getSpeed(self):
      return self.__speed

  def getSeats(self):
      return self.__seats
    
  def changeSpeed(self,action,__speed):
    """ Methode zum ändern der Geschwindigkeit """
    if __speed < 0:
      print 'Nur positive Zahlen eingeben'
      return
    if action == 'bremsen':
      act = -1
      if self.__speed <= __speed:
        print 'Zug fährt bereits langsamer'
        return
    elif action == 'beschleunigen':
      act = 1
    else:
      print "Erbitte klare Anweisung"
      return
    while self.__speed != __speed:
      self.__speed += 10*act
      print self.__speed
    
  def __getIn(self,people):
    """ Methode zum Einsteigen von Personen """
    if self.__speed == 0:
      self.__seats -= people
    else:
      print '''Einsteigen nicht möglich.
      Zug fährt mit %s km/h.''' %(self.__speed)
    
  def __getOut(self,people):
    """ Methode zum Aussteigen von Personen """
    if self.__speed == 0:
      self.__seats += people
    else:
      print '''Aussteigen nicht möglich.
      Zug fährt mit %s km/h.''' %(self.__speed)

  def changePeople(self, p_in=0, p_out=0):
    if p_in:
      self.__getIn(p_in)
      self.__countPassengers(p_in)
    if p_out:
      self.__getOut(p_out)
    print "Aktuelle Sitzplätze: %s" %(self.getSeats())
      
  def __countPassengers(self, people):
      self.__passengers += people


  def __add__(self, dildo):
      summe = self.__passengers + dildo.getPassengers()
      print "Gesamtpassagierzahl %s" %(summe)
Ride.py

Code: Alles auswählen

from Train import Train

class Ride(Train):

    def __init__(self, seats, line):
        Train.__init__(self, seats)
        self.__line = line
        self.__stops = 0

    def stationStop(self):
        self.changeSpeed("bremsen", 0)

        if self.__stops < len(self.__line)-1:
            self.__stops +=1
            
        print "Jetzt halt in %s" %(self.__line[self.__stops])
Ich benutze die IDLE von Python unter Windows zum versuchen.

Re: Nach Modularen Aufbau ASCII Fehler?

Verfasst: Sonntag 6. Mai 2012, 15:53
von anogayales
Wahrscheinlich

Code: Alles auswählen

# -*- coding: utf-8 -*-
am Anfang der Datei vergessen.

Grüße,
anogayales

Re: Nach Modularen Aufbau ASCII Fehler?

Verfasst: Sonntag 6. Mai 2012, 16:00
von Hyperion
Man sollte noch erwähnen, dass es in Python unüblich ist, für jede Klasse eine eigene Datei zu erstellen.

Desweiteren sieht Dein Code arg nach Java aus... "Getter" und "Setter" sind in Python meist unnötig und wenn, löst man das mit Properties. Zudem solltest Du keine doppelten Unterstriche in Deinem Code verwenden - selbst einzelne sind "internen" Attributen per Konvention vorbehalten. Allgemein kapselt man in Python keine Attribute.

Du solltest Dir auch mal den Styleguide PEP8 durchlesen und Deinen Code entsprechend anpassen. Du verwendest zwei, PEP8 definiert vier Spaces als Einrückung - das fällt neben mixedCase-Namen sofort negativ ins Auge ;-)

Re: Nach Modularen Aufbau ASCII Fehler?

Verfasst: Sonntag 6. Mai 2012, 17:36
von /me
ShoxX hat geschrieben:

Code: Alles auswählen

  def changeSpeed(self,action,__speed):
Ergänzend zu Hyperion: Die Parameter in einer Funktionssignatur mit einem Unterstrich beginnen zu lassen ist hochgradig merkwürdig.

Re: Nach Modularen Aufbau ASCII Fehler?

Verfasst: Sonntag 6. Mai 2012, 17:45
von derdon
Ist "dildo" tatsächlich englisch für Passagier? Ich musste da an etwas anderes denken …

Re: Nach Modularen Aufbau ASCII Fehler?

Verfasst: Sonntag 6. Mai 2012, 19:35
von BlackJack
@ShoxX: Was soll denn `Ride` darstellen? Ich habe das Gefühl, dass die Vererbung hier falsch ist.

Re: Nach Modularen Aufbau ASCII Fehler?

Verfasst: Montag 7. Mai 2012, 13:36
von Leonidas
BlackJack hat geschrieben:@ShoxX: Was soll denn `Ride` darstellen? Ich habe das Gefühl, dass die Vererbung hier falsch ist.
Ich habe hingegen eher das Gefühl das dieser ganze Entwurf komplett für die Tonne ist. Mit haben sich bei fast jeder Zeile die Fußnägel eingerollt.