hariC11 Δημοσ. 11 Ιανουαρίου 2016 Δημοσ. 11 Ιανουαρίου 2016 Καλησπέρα, θα ήθελα να μου πείτε 2-3 παραδείγματα με τις κλάσεις στην Python. Έχω να γράψω ενα πρόγραμμα και μπερδεύομαι στο πότε γράφω τις μεταβλητές μου πχ απο name, σε self.name και πως καλώ μια κλάση(εννοώ τις συναρτήσεις τις) Σας ευχαριστώ!!!
groot Δημοσ. 11 Ιανουαρίου 2016 Δημοσ. 11 Ιανουαρίου 2016 Δώσε ένα παράδειγμα κώδικα γιατί αλλιώς είναι δύσκολο κανείς να μυρίσει τα νύχια του και να βρει τι δεν καταλαβαίνεις ή να σου κάνει μάθημα ολόκληρη την python.
hariC11 Δημοσ. 12 Ιανουαρίου 2016 Μέλος Δημοσ. 12 Ιανουαρίου 2016 Έχω να γράψω ενα προγραμμα περιπου σαν να εισαι στο γκισε μιας τραπεζας. Το αρχικο μενου ειναι αυτο που εχω γραψει print(".::MENU::.\n" "1: Create Account\n" "2: Withdraw\n" "3: Deposit\n" "4: Print Accounts Info\n" "5: Exit\n") x=int(input("Choose: ")) accounts=[] απο εκει και περα θελει να υλοποιηθει με 4 κλασεις, τις οποιες τις εχω γραψει, θεωρητικα σωστα, αλλα δεν γνωριζω πως θα τις τρεξω... μια απο αυτες ειναι αυτη: class Manager: def __init__(self,name,sur,add,tel,mail,mdep): self.name=name self.sur=sur self.add=add self.tel=tel self.mail=mail self.mdep=mdep self.id=ID def create_account(self): print("Choose Action :1 \n\n") print(".::New Account::.") name=str(input("Insert Name:")) sur=str(input("Insert Surname:")) add=str(input("Insert Address:")) tel=str(input("Insert Telephone:")) mail=str(input("Insert EMail:")) mdep=int(input("Insert Account current Balance:")) append.accounts=[self.id,[self.name,[self.sur,[self.add,[self.tel,[self.mail,[self.mdep]]]]]]] print("Account with ID %d successfully created!", self.id) def print_accounts_info(self): print("Choose Action:4 \n\n" ".::Accounts Info::.") return self.accounts def deposit(self,amount): print("Choose Action: 3") if (self.id==x(input("Insert Account ID:"))): self.mdep+=amount print(".::Deposit::.") print("%d Euro deposit @ Account ID %d, Current Balance:%d Euro",self.amont,self.id,self.mdep) else: print("Den vrethike logariasmos") def withdraw(self,amount): print("Choose Action: 2") if (self.id==x(input("Insert Account ID:"))): if(amount>self.mdep): print("Mh diathesimo upoloipo") else: self.mdep-=amount print(".::Withdraw::.") print("%d Euro withdraw @ Account ID %d, Current Balance: %d Euro",self.amount,self.id,self.mdep) else: print("Den vrethike logariasmos")
groot Δημοσ. 12 Ιανουαρίου 2016 Δημοσ. 12 Ιανουαρίου 2016 και το πρόβλημα ποιο είναι; Επίσης, φαντάζομαι ότι έχεις υπάλληλο και πελάτη. Η python έχει class functions, ό,τι πρέπει για να κάνεις factory pattern. Τέλος, για να "τρέξεις" μία κλάση, πρέπει να την καλέσεις. Δοκίμασες να την χρησιμοποιήσεις; Ο κώδικας είναι δικός σου;
hariC11 Δημοσ. 12 Ιανουαρίου 2016 Μέλος Δημοσ. 12 Ιανουαρίου 2016 και το πρόβλημα ποιο είναι; Επίσης, φαντάζομαι ότι έχεις υπάλληλο και πελάτη. Η python έχει class functions, ό,τι πρέπει για να κάνεις factory pattern. Τέλος, για να "τρέξεις" μία κλάση, πρέπει να την καλέσεις. Δοκίμασες να την χρησιμοποιήσεις; Ο κώδικας είναι δικός σου; Εννοείται ο κώδικας ειναι δικός μου, απλα δεν μου τρέχει..
groot Δημοσ. 12 Ιανουαρίου 2016 Δημοσ. 12 Ιανουαρίου 2016 Εννοείται ο κώδικας ειναι δικός μου, απλα δεν μου τρέχει.. ΟΚ. Και τι λάθος σου λέει;
iceblade Δημοσ. 12 Ιανουαρίου 2016 Δημοσ. 12 Ιανουαρίου 2016 Εννοείται ο κώδικας ειναι δικός μου, απλα δεν μου τρέχει.. Με μια γρήγορη ματιά, στην __init__ η σειρά append.accounts... είναι τελείως λάθος από διάφορες μεριές + του ότι η λίστα αυτή είναι άχρηστη, απλά τύπωσε τις μεταβλητές της κλάσης όταν τις χρειάζεσαι στην print_accounts_info. Διάφορα άλλα λάθη self.id = ID (ενώ το ID δεν περνιέται σαν argument στον constructor)....
hariC11 Δημοσ. 12 Ιανουαρίου 2016 Μέλος Δημοσ. 12 Ιανουαρίου 2016 Με μια γρήγορη ματιά, στην __init__ η σειρά append.accounts... είναι τελείως λάθος από διάφορες μεριές + του ότι η λίστα αυτή είναι άχρηστη, απλά τύπωσε τις μεταβλητές της κλάσης όταν τις χρειάζεσαι στην print_accounts_info. Διάφορα άλλα λάθη self.id = ID (ενώ το ID δεν περνιέται σαν argument στον constructor).... ΟΚ. Και τι λάθος σου λέει; Το πρόγραμμα πρέπει να τρέχει έτσι :
groot Δημοσ. 12 Ιανουαρίου 2016 Δημοσ. 12 Ιανουαρίου 2016 Το πρόγραμμα πρέπει να τρέχει έτσι : Για να καταλάβω.. Έχεις γράψει (μόνος σου από ό,τι έγραψες και εσύ ο ίδιος) κλάσεις σε python και δεν ξέρεις να κάνεις το πρόγραμμα να τρέξει; Δηλαδή, έχεις καταφέρει (με τα όποια μικρά λάθη) να κάνεις κάτι μέτριας δυσκολίας και δεν μπορείς να κάνεις το πιο απλό; Ξαναρωτάω... ο κώδικας είναι δικός σου; Δηλαδή, εσύ έχεις γράψει τον κώδικα εξ' αρχής; 1
M2000 Δημοσ. 12 Ιανουαρίου 2016 Δημοσ. 12 Ιανουαρίου 2016 Περαστικός ήμουν...μάλλον αυτό θα θέλει! http://stackoverflow.com/questions/396856/how-to-instantiate-a-class-in-python
Giorgos65ert Δημοσ. 12 Ιανουαρίου 2016 Δημοσ. 12 Ιανουαρίου 2016 Τρέξε την κλάση έτσι: (αν θες να καλέσεις επιτόπου χωρίς store σε variable) Manager(name,sur,add,tel,mail,mdep) and Manager(name,sur,add,tel,mail,mdep).your_function() Άλλα έχει ο κώδικας λάθη αρκετά όπως στο append.accounts το append είναι undefined(Μάλλον θα μπερδεύτηκες και θα είχες στο μυαλό σου την append της list όποτε χρησιμοποιησε accounts.append) άλλα έχει αρκετά άλλα ακόμα
hariC11 Δημοσ. 12 Ιανουαρίου 2016 Μέλος Δημοσ. 12 Ιανουαρίου 2016 Για να καταλάβω.. Έχεις γράψει (μόνος σου από ό,τι έγραψες και εσύ ο ίδιος) κλάσεις σε python και δεν ξέρεις να κάνεις το πρόγραμμα να τρέξει; Δηλαδή, έχεις καταφέρει (με τα όποια μικρά λάθη) να κάνεις κάτι μέτριας δυσκολίας και δεν μπορείς να κάνεις το πιο απλό; Ξαναρωτάω... ο κώδικας είναι δικός σου; Δηλαδή, εσύ έχεις γράψει τον κώδικα εξ' αρχής; Περαστικός ήμουν...μάλλον αυτό θα θέλει! http://stackoverflow.com/questions/396856/how-to-instantiate-a-class-in-python Τρέξε την κλάση έτσι: (αν θες να καλέσεις επιτόπου χωρίς store σε variable) Manager(name,sur,add,tel,mail,mdep) and Manager(name,sur,add,tel,mail,mdep).your_function() Άλλα έχει ο κώδικας λάθη αρκετά όπως στο append.accounts το append είναι undefined(Μάλλον θα μπερδεύτηκες και θα είχες στο μυαλό σου την append της list όποτε χρησιμοποιησε accounts.append) άλλα έχει αρκετά άλλα ακόμα Ο κώδικας ειναι δικος μου, για αυτο τοσα λαθη... Μ2000, φιλε μου δεν ειναι η κληση της κλασεις, το βρηκα αυτο.. Τρομερο λάθος με το append, μολις το ειδα. Θελω να εμφανιζει το μενου και διπλα να γραφω, για αυτο εχω γραψει με αυτον τον τροπο το προγραμμα, αλλα εγω εχω καταλαβει πως για να λειτουργησει μια κλαση, χρειαζεται ηδη τις πληροφοριες στην παρενθση για παραδειγμα: x=Manager(name,sur,add,tel,mail,mdep) print ( x.deposit (1500)) Αυτο που εγω θελω ειναι να το πληκτρολογω, το amount εκεινη την στιγμη και να μπαινει στην μεταβλητη, οχι να το δηλωνω πρωτα. Για αυτο εχω μπερδευτει στις κλασεις!!! Ασε που θελει να τα αποθηκευσω και σε μια λιστα πολλαπλη (λιστα σε λιστα) και εχω χάσει την μπάλα... Πως μπορω να το υλοποιησω το πρόγραμμα ετσι που σας το λεω; Σας ευχαριστω και παλι για τον χρόνο σας
iceblade Δημοσ. 12 Ιανουαρίου 2016 Δημοσ. 12 Ιανουαρίου 2016 Προφανώς θέλεις να λύσεις κάποια άσκηση (από κάποιο ΤΕΙ), ΟΚ ακόμα και εσύ να τον έγραψες τον κώδικα σου λείπουν βασικές γνώσεις OOP. Αφιέρωσε λίγο χρόνο τουλάχιστο για να μάθεις τα βασικά πράγματα (π.χ. δες εδώ και εδώ) 1
hariC11 Δημοσ. 13 Ιανουαρίου 2016 Μέλος Δημοσ. 13 Ιανουαρίου 2016 @ice blade έχεις δίκιο φιλε μου κάποια άσκηση λύνω, μου λείπουν γνώσεις αλλά εχω καταλάβει ευρύτερα τον αντικειμενοστραφή προγραμματισμό. Με τα απλά δεν εχω θέμα, μπήκαμε στις κλάσεις προχθές, έλλειπα και εχω μπερδευτεί τελείως
iceblade Δημοσ. 13 Ιανουαρίου 2016 Δημοσ. 13 Ιανουαρίου 2016 @ice blade έχεις δίκιο φιλε μου κάποια άσκηση λύνω, μου λείπουν γνώσεις αλλά εχω καταλάβει ευρύτερα τον αντικειμενοστραφή προγραμματισμό. Με τα απλά δεν εχω θέμα, μπήκαμε στις κλάσεις προχθές, έλλειπα και εχω μπερδευτεί τελείως Αν χτες μπήκατε στις κλάσεις και μάλιστα έλλειπες μάλλον δεν έχεις καταλάβει ευρύτερα τον αντικειμενοστραφή προγραμματισμό. Διάβασε τα links που σου έδωσα και αν έχεις απορίες, εδώ είμαστε.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα