How to Objektorientierung

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
I3lackt4r
User
Beiträge: 17
Registriert: Freitag 16. September 2022, 20:25

Hallo liebe Mitglieder,

ich bin noch ganz am Anfang. Habe mir aus Spaß diesen Code geprinted...
Kann mir vielleicht bitte erklären wie ich die "altern" Definition in eine Integer und damit rechnen kann?

class Leute():
def __init__(self,Vorname,Nachname,Alter):
self.Vorname = Vorname
self.Nachname = Nachname
self.Alter = Alter


def altern (self):
self.Alter= self.Alter +str(1)

def Daten(self):
print(self.Vorname+" ,"+self.Nachname+" ist "+self.Alter)

emp1 = Leute("David" , " Lawrence","39")
emp1.altern()
Carlo = Leute("Carlo" , " Meier","33")
Gisi1=Leute ("Gisela" , " Müller","67")
Konfuzius=Leute("Mahadma" , " Gandhi","103")
emp1.Daten()
Carlo.Daten()
Gisi1.Daten()
Konfuzius.Daten()
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Gar nicht, eine Zeichenkette ist keine Zahl.Du kannst in den jeweils anderen Typ umwandeln.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
I3lackt4r
User
Beiträge: 17
Registriert: Freitag 16. September 2022, 20:25

Also was mache ich mit meinem Problem ?
Benutzeravatar
ThomasL
User
Beiträge: 1367
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Du speicherst das Alter nicht als String sondern als Integer.
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
I3lackt4r
User
Beiträge: 17
Registriert: Freitag 16. September 2022, 20:25

sorry nochmal dumm gefragt... muss das def __init__(self,Vorname,Nachname,int(Alter):) sein und die ganzen Alterstrings auch so ?
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@I3lackt4r: Nein, das Alter sollte von vornherein nirgends eine Zeichenkette sein.

Weitere Anmerkungen:

`Leute` passt nicht als Name für eine Klasse die gar keine Leute (Mehrzahl) modelliert, sondern nur *eine* Person.

Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase).

Funktions- und Methodennamen beschreiben üblicherweise die Tätigkeit, die sie durchführen. `Daten()` ist keine Tätigkeit und dazu noch absolut nichtssagend.

Man nummeriert keine Namen. Das macht hier noch nicht einmal Sinn da willkürlich eine 1 dran zu hängen oder es nicht zu tun.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
I3lackt4r
User
Beiträge: 17
Registriert: Freitag 16. September 2022, 20:25

Ich verstehe jetzt nichts mehr :-(
Benutzeravatar
Dennis89
User
Beiträge: 1156
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

ist jetzt vermutlich nicht was du hören willst, aber du kommst jetzt von einem Problem zum nächsten Problem und die Lösungen wirst du meist nicht verstehen.
Ich würde dass was du da vorhast erst mal ohne Klasse programmieren, damit du dich mit den Grundlagen vertraut machen kannst. Es ist wichtig zu wissen was mit einer Zahl passiert, wenn man die zwischen Anführungszeichen schreibt, was 'str()', 'int()' etc macht und wie man Ausgaben, die aus verschiedenen Typen, Zahlen und Buchstaben, zusammen setzt.

Du musst erst mal etwas "spielen" zum Beispiel mit solchen Tests:

Code: Alles auswählen

was_ist_das = 5
print(was_ist_das)
print(type(was_ist_das))

was_ist_das = "5"
print(was_ist_das)
print(type(was_ist_das))
Damit du die unterschiedlichen Datentypen lernst.

Und einfach mal weiter probieren, wieso kann Python hier nicht x und y zusammenzählen?

Code: Alles auswählen

x = 5
y = "5"

print(x + y)
Am besten noch das Tutorial durcharbeiten:
https://docs.python.org/3/tutorial/

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
I3lackt4r
User
Beiträge: 17
Registriert: Freitag 16. September 2022, 20:25

Vielen Dank, Dennis
I3lackt4r
User
Beiträge: 17
Registriert: Freitag 16. September 2022, 20:25

Und natürlich auch ein großes Danke für die anderen Poster
Antworten