Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα, θα ήθελα να μου πείτε 2-3 παραδείγματα με τις κλάσεις στην Python. Έχω να γράψω ενα πρόγραμμα και μπερδεύομαι στο πότε γράφω τις μεταβλητές μου πχ απο name, σε self.name και πως καλώ μια κλάση(εννοώ τις συναρτήσεις τις)

 

Σας ευχαριστώ!!!

Δημοσ.

Δώσε ένα παράδειγμα κώδικα γιατί αλλιώς είναι δύσκολο κανείς να μυρίσει τα νύχια του και να βρει τι δεν καταλαβαίνεις ή να σου κάνει μάθημα ολόκληρη την python. 

Δημοσ.

Έχω να γράψω ενα προγραμμα περιπου σαν να εισαι στο γκισε μιας τραπεζας. Το αρχικο μενου ειναι αυτο που εχω γραψει

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")

Δημοσ.

και το πρόβλημα ποιο είναι;

 

Επίσης, φαντάζομαι ότι έχεις υπάλληλο και πελάτη. Η python έχει class functions, ό,τι πρέπει για να κάνεις factory pattern.

 

Τέλος, για να "τρέξεις" μία κλάση, πρέπει να την καλέσεις. Δοκίμασες να την χρησιμοποιήσεις; Ο κώδικας είναι δικός σου;

Δημοσ.

και το πρόβλημα ποιο είναι;

 

Επίσης, φαντάζομαι ότι έχεις υπάλληλο και πελάτη. Η python έχει class functions, ό,τι πρέπει για να κάνεις factory pattern.

 

Τέλος, για να "τρέξεις" μία κλάση, πρέπει να την καλέσεις. Δοκίμασες να την χρησιμοποιήσεις; Ο κώδικας είναι δικός σου;

Εννοείται ο κώδικας ειναι δικός μου, απλα δεν μου τρέχει..

Δημοσ.

Εννοείται ο κώδικας ειναι δικός μου, απλα δεν μου τρέχει..

 

Με μια γρήγορη ματιά, στην __init__ η σειρά append.accounts... είναι τελείως λάθος από διάφορες μεριές + του ότι η λίστα αυτή είναι άχρηστη, απλά τύπωσε τις μεταβλητές της κλάσης όταν τις χρειάζεσαι στην print_accounts_info.

Διάφορα άλλα λάθη self.id = ID (ενώ το ID δεν περνιέται σαν argument στον constructor)....

Δημοσ.

Με μια γρήγορη ματιά, στην __init__ η σειρά append.accounts... είναι τελείως λάθος από διάφορες μεριές + του ότι η λίστα αυτή είναι άχρηστη, απλά τύπωσε τις μεταβλητές της κλάσης όταν τις χρειάζεσαι στην print_accounts_info.

Διάφορα άλλα λάθη self.id = ID (ενώ το ID δεν περνιέται σαν argument στον constructor)....

 

ΟΚ. Και τι λάθος σου λέει;

 Το πρόγραμμα πρέπει να τρέχει έτσι : 

post-248266-0-35598100-1452604428_thumb.jpg

Δημοσ.

Το πρόγραμμα πρέπει να τρέχει έτσι :

Για να καταλάβω..

 

Έχεις γράψει (μόνος σου από ό,τι έγραψες και εσύ ο ίδιος) κλάσεις σε python και δεν ξέρεις να κάνεις το πρόγραμμα να τρέξει;

 

 

Δηλαδή, έχεις καταφέρει (με τα όποια μικρά λάθη) να κάνεις κάτι μέτριας δυσκολίας και δεν μπορείς να κάνεις το πιο απλό;

 

 

Ξαναρωτάω... ο κώδικας είναι δικός σου; Δηλαδή, εσύ έχεις γράψει τον κώδικα εξ' αρχής;

  • Like 1
Δημοσ.

Τρέξε την κλάση έτσι: (αν θες να καλέσεις επιτόπου χωρίς 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) άλλα έχει αρκετά άλλα ακόμα

Δημοσ.

Για να καταλάβω..

 

Έχεις γράψει (μόνος σου από ό,τι έγραψες και εσύ ο ίδιος) κλάσεις σε 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 εκεινη την στιγμη και να μπαινει στην μεταβλητη, οχι να το δηλωνω πρωτα.

Για αυτο εχω μπερδευτει στις κλασεις!!! Ασε που θελει να τα αποθηκευσω και σε μια λιστα πολλαπλη (λιστα σε λιστα) και εχω χάσει την μπάλα... 

 

Πως μπορω να το υλοποιησω το πρόγραμμα ετσι που σας το λεω; 

 

Σας ευχαριστω και παλι για τον χρόνο σας

Δημοσ.

Προφανώς θέλεις να λύσεις κάποια άσκηση (από κάποιο ΤΕΙ), ΟΚ ακόμα και εσύ να τον έγραψες τον κώδικα σου λείπουν βασικές γνώσεις OOP. Αφιέρωσε λίγο χρόνο τουλάχιστο για να μάθεις τα βασικά πράγματα (π.χ. δες εδώ και εδώ)

  • Like 1
Δημοσ.

@ice blade έχεις δίκιο φιλε μου κάποια άσκηση λύνω, μου λείπουν γνώσεις αλλά εχω καταλάβει ευρύτερα τον αντικειμενοστραφή προγραμματισμό. Με τα απλά δεν εχω θέμα, μπήκαμε στις κλάσεις προχθές, έλλειπα και εχω μπερδευτεί τελείως

Δημοσ.

@ice blade έχεις δίκιο φιλε μου κάποια άσκηση λύνω, μου λείπουν γνώσεις αλλά εχω καταλάβει ευρύτερα τον αντικειμενοστραφή προγραμματισμό. Με τα απλά δεν εχω θέμα, μπήκαμε στις κλάσεις προχθές, έλλειπα και εχω μπερδευτεί τελείως

 

Αν χτες μπήκατε στις κλάσεις και μάλιστα έλλειπες μάλλον δεν έχεις καταλάβει ευρύτερα τον αντικειμενοστραφή προγραμματισμό. Διάβασε τα links που σου έδωσα και αν έχεις απορίες, εδώ είμαστε.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...