Hallo Forum Gemeinde,
ich bin der Mustafa und bin angehender IT-Techniker. Ich bin seit einiger Zeit dran, Python zu lernen. Das kommende Schuljahr werden wir es in der Schule auch lernen.
Ich mache aktuell einen Online Kurs und komme an einer Sache nicht weiter und weiß nicht, wo der Fehler ist. Kann mir da jemand helfen?
Hier der Code:
class Cube():
def _init_(self, side):
self.side = side
def surface(self):
print(self.side ** 2 + 6)
def volume(self):
print(self.side ++ 3)
a = Cube(3)
a.surface()
a.volume()
--------------------------------------------------
Das kommt als Meldung:
TypeError Traceback (most recent call last)
Input In [79], in <cell line: 12>()
9 def volume(self):
10 print(self.side ++ 3)
---> 12 a = Cube(3)
14 a.surface()
15 a.volume()
TypeError: Cube() takes no arguments
Danke
Neu hier und gleich eine Frage
Wenn du deinen Code hier in Code-Tags setzt (die erscheinen automatisch, wenn du im vollständigen Editor den </> Button drückst), dann bleibt auch die Formatierung erhalten.
Die Fehlermeldung sagt, dass deine Klasse "Cube" keinerlei Argumente erwartet, wenn sie initialisiert wird. Das liegt daran, dass du keine __init__ Methode hast. Hast du? Bist du sicher, dass sie uterstrich unterstrich init unterstrich unterstrich heißt?
Die Fehlermeldung sagt, dass deine Klasse "Cube" keinerlei Argumente erwartet, wenn sie initialisiert wird. Das liegt daran, dass du keine __init__ Methode hast. Hast du? Bist du sicher, dass sie uterstrich unterstrich init unterstrich unterstrich heißt?
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ok, das ist der Fehler. Die Init-Methode von Klassen braucht zwei Unterstriche vor und nach init, also __init__ .
Wenn du _init_ schreibst, dann hast du eine Methode mit dem Namen _init_ , die keine spezielle Bedeutung hat und die du über Klasse._init_() aufrufen kannst / musst.
Gruß, noisefloor
ok, das ist der Fehler. Die Init-Methode von Klassen braucht zwei Unterstriche vor und nach init, also __init__ .
Wenn du _init_ schreibst, dann hast du eine Methode mit dem Namen _init_ , die keine spezielle Bedeutung hat und die du über Klasse._init_() aufrufen kannst / musst.
Gruß, noisefloor
und bei der Methode volume() die beiden ++ durch ** ersetzen
noch besser wäre es, wenn die Methode das Volumen als Wert zurück gibt
das Volumen wird dann durch den Aufruf der Methode ausgegeben
Noch eleganter wird es durch dekorieren der Methode als property der Klasse
dann kann das Volumen durch Verwendung des Methodennamens ausgegeben werden
Code: Alles auswählen
def volume(self):
print(self.side ** 3)
Code: Alles auswählen
def volume(self):
return self.side ** 3
Code: Alles auswählen
wuerfel = Cube(3)
print(wuerfel.volume())
Code: Alles auswählen
@property
def volume(self):
return self.side ** 3
Code: Alles auswählen
wuerfel = Cube(3)
print(wuerfel.volume)
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png