Wywołanie metody klasy bazowej

0

Wywołuje metoę str z klasy Garage, potem metodę z klasy bazowej i tutaj nic się nie wyświetla z klasy bazowej. Dlaczego jak to naprawić
plik Garage.py

from Car import Car

class Garage(Car):

    def __init__(self):
        self._adress = ''

 def __str__(self):
        print('Samochody w garazu:')
        for obj in self.cars:
           sys.stdout.write("%s, " %obj)
        super(Car).__str__()
        return ''
obj = Garage()
print obj

plik Car.py

class Car(object):
    ....
def __str__(self):
        print('marka:' + str(self.marka))
        return ''
0

Bo wywołujesz metodę str z klasy object zamiast Car. Poprawnie w python 3 będzie super().__str__() a w python2 super(Garage, self).__str__()

0

'Garage' object has no attribute 'marka'

0

instancja obiektu Garage nie ma zmiennej marka.

0

Tak jak pisałem. Tworzysz instancję klasy Garage. Jej __init__ nie wywołuje __init__ klasy nadrzędnej (Car), która przypisuje zmienną marka bo instancji.

Problem jest zgoła inny. Działasz na skomplikowanym kodzie, którego kompletnie nie rozumiesz i próbujesz zgadywać - dlaczego? Tracisz potencjał nauki.

0

tworząc instancję klasy Garage ' class Garage(Car): '
wywołując teraz z pozoimu obiektu typu Garage metodę klasy Car co się dzieje?
w normalnym języku programowania było tak że klasa pochodna to klasa podstawowa + dodatkowe metody, atrybuty klasy pochodnej, a tutaj tak nie jest?

0

No jest tak. Ale nadpisujesz metodę __init__ więc nie wywołujesz metody __init__ klasy Car bo ją nadpisałeś.

0

jakie init? przecież ja wywołuje metodę str , nie tworze obiektu Car bo on przecież już istnieje, przynajmniej tak mi się wydaje

0

Dobra. Nie masz absolutnie żadnych podstaw Pythona a operujesz na skomplikowanym kodzie. To nie ma sensu bo musiałbym tutaj tworzyć poradnik od zera. Sugeruję trochę opamiętania bo to droga donikąd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0