Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα?

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4250

  • XristosTsa
  • Το Άβαταρ του/της XristosTsa
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
class Person(object):
     athlites_list = []
     def __init__(self,name,age):
          self.name = name
          self.age= age
          self.athlites_list = []
     def setList(self):
          self.athlites_list.append(self.name)
          self.athlites_list.append(self.age)
          self.athlites_list.append(self.athlima)
          self.athlites_list.append(self.epidosi)
          return (self.athlites_list)
 
class Athlima(Person):
     def __init__(self,name,age,athlima, epidosi):
          Person.__init__(self,name,age)
          self.athlima = athlima
          self.epidosi = epidosi
 
apantisi = 'ν'    
while apantisi =='ν':
     name = input('Δώσε όνομα αθλητή: ')
     age = int(input('Δώσε ηλικια αθλητή: '))
     athlima = input('Δώσε το άθλημά του: ')
     epidosi = input('Δώσε την επίδοση του αθλητή: ')
     p = Athlima(name, age,athlima, epidosi)
     f = open("C:\ΦΑΚΕΛΟΣ ΓΙΑ ΕΞΑΣΚΗΣΗ ΤΗΣ 'PYTHON'\w.txt",'a')
     f.write(str(p.setList()))
     f.close()
     print('Kαταχωρήθηκε!!')
     apantisi = input('Θέλετε να εισάγετε άλλον αθλητή? ν/ο ')
     if(apantisi != 'ν' ):
          break
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4252

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Ναι είναι αντικειμενοστραφής.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": XristosTsa

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4253

  • XristosTsa
  • Το Άβαταρ του/της XristosTsa
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
Ευχαριστώ! Που μπορώ να βρώ ασκήσεις με κλάσεις και υποκλήσεις?
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4254

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Ασκήσεις

Video Tutorial

Βιβλίο

Αν θες να μάθεις αντικειμενοστραφή προγραμματισμό σου προτείνω να πας να μάθεις Java. Είναι αυστηρά ορισμένη στον αντικειμενοστραφή προγραμματισμό και μπορεί να σου μάθει πολύ καλά όλες τις έννοιες, συν ότι
υπάρχει πάρα μα πάρα πολύ υλικό στο ίντερνετ για java και αντικειμενοστραφής προγραμματισμός.
Μόλις τις μάθεις (έννοιες OOP), μπορείς να γυρίσεις σε python.
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": XristosTsa

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4255

  • XristosTsa
  • Το Άβαταρ του/της XristosTsa
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
Ευχαριστώ πολυ για τον χρόνο σου!
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από XristosTsa.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4256

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Μερικές παρατηρήσεις από μένα αν επιτρέπεται.
Βασικά δεν καταλαβαίνω τον σκοπό των κλάσεων και των μεθόδων μαντεύω ότι είναι καθαρά για λόγους εξάσκησης έτσι;

Η λίστα athlites_list είναι mutable έτσι όταν την χρησιμοποιείς και σαν class attribute και σαν instance attribute και την μηδενίζεις (γιατί) μετά βάζεις μέσα χύμα τιμές. Δεν κατάλαβαίνω τον σκόπο της

στο while loop βάζεις στο τέλος if και break ίδιο με το όρισμα του while (θα σπάσει ούτoς η άλλως αν η είσοδος δεν είναι ν)

Στις κλάσεις δεν κάνουμε str(p.kati) κάνουμε μέσα στην κλάση μία μέθοδο __str__ ή __repr__
και γράφουμε εκεί το str που θέλουμε να επιστρέφει.

Ότι δεν είναι text δεν το αποθηκεύουμε σε text file αλλά σε binary pickle ή shelve είναι οκ
ακόμα καλύτερα database
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4257

  • XristosTsa
  • Το Άβαταρ του/της XristosTsa
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
Για εξάσκηση γράφτηκε. Εδω κ ενα μηνα περιπου ασχολούμε με την python. Ευχαριστω για τις παρατηρήσεις σου. Αν μπορεις γραψε μου σε καλύτερο κώδικα. Θα με βοηθούσε απίστευτα πολυ.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4258

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Οι κλάσεις μόνο μια πρώτη προσέγγιση με βάση τα δικά σου χωρίς να ξέρω τι θες να πετύχεις
class Person://Το object σε python 3 δεν χρειάζεται
    athlites_list = []
    in_list=False//Αυτό το κάνω για να μην ξαναμπαίνει το ίδιο αντικείμενο στην λίστα 
 
    def __init__(self,name,age):
        self.name = name
        self.age= age
 
    def setList(self)://Στη λίστα βάζεις το αντικείμενο και όποτε θες το τυπώνεις γιατί έχει str
        if not self.in_list:
            self.athlites_list.append(self)
        self.in_list=True
 
    def __str__(self):
        return 'Onoma : {} Ilikia : {} Athlima : {} Epidosi : {}'.format( self.name,self.age, self.athlima,self.epidosi)
 
class Athlima(Person):
    def __init__(self,name,age,athlima, epidosi):
        Person.__init__(self,name,age)
        self.athlima = athlima
        self.epidosi = epidosi
και η έξοδος που μπορούμε να πάρουμε είναι κάπως έτσι
>>> p = Athlima('Theo', 47,'tennis', 100)
>>> n = Athlima('Teo', 50,'sprint', 100)
>>> n.setList()
>>> p.setList()
 
>>> for i in Person.athlites_list:
	print(i)
 
 
Onoma : Theo Ilikia : 47 Athlima : tennis Epidosi : 100
Onoma : Teo Ilikia : 50 Athlima : sprint Epidosi : 100
>>> 
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": XristosTsa, gt

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4259

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Ο βασικός κώδικας πέρα από τις κλάσεις θα μπορούσε να είναι έτσι:
import pickle
apantisi = 'ν' 
with open ('C:/mydb', 'wb') as f://αυτό λέγεται context manager και είναι αρκετά χρήσιμο
    while apantisi =='ν':
        name = input('Δώσε όνομα αθλητή: ')
        age = int(input('Δώσε ηλικια αθλητή: '))
        athlima = input('Δώσε το άθλημά του: ')
        epidosi = input('Δώσε την επίδοση του αθλητή: ')
        p = Athlima(name, age,athlima, epidosi)
        p.setInList()
        print('Kαταχωρήθηκε!!')
        apantisi = input('Θέλετε να εισάγετε άλλον αθλητή? ν/ο ')//όπως σου είπα το if break δεν χρειάζεται
    pickle.dump(Athlima.athlites_list, f)//εδώ βάζεις τι λίστα στο binary file που άνοιξες παραπάνω
 

όταν τώρα θες να δεις τη λίστα σου
θα κάνεις import το pickle και τις κλάσεις σου και μετά
>>> y=pickle.load(open('C:/mydb', 'rb'))
>>> for i in y:
	print(i)
 
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": XristosTsa, gt

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4261

  • XristosTsa
  • Το Άβαταρ του/της XristosTsa
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
-Με την p.setInList() εννοείς την μέθοδο p.setList() της Person?
-Mε την βοήθεια της __str__ γινετε η εκτύπωση του αντικειμένου με την for στο τελος?

Ουσιαστικά βάζω το ίδιο το αντικείμενο p στην λίστα και αργότερα εκτυπώνω τις ιδιότητές του? Σε αντίθεση με αυτό που είχα γράψει πρώτα, όπου έβαζα της ιδιότητες χύμα.
Τελευταία διόρθωση: 7 Χρόνια 8 Μήνες πριν από XristosTsa.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4262

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Ναι της άλλαξα όνομα γιατί το setList δεν μου καθόταν καλά
Το __str__ είναι τι βλέπεις όταν κάνεις στο αντικείμενο print ή str() Εγώ την έγραψα έτσι
def __str__(self):
        return 'Onoma : {} Ilikia : {} Athlima : {} Epidosi : {}'.format( self.name,self.age, self.athlima,self.epidosi)
αλλά την γράφεις όπως θές αρκεί να κάνει return string

Αργότερα δες την __repr__ καλύπτει και την __str__

Ναι αυτό κάνω εγώ αλλά για να σου δείξω πως γίνεται όχι ότι βλέπω κάποια χρησιμότητα
Εστίασε στην __strt__ στο ότι έχω την λίστα σε ένα μόνο σημείο
Στο ότι δεν χρειάζεται break για να βγείς από το while
Στο ότι τα αντικείμενα κάθε είδους δεν αποθηκεύονται σε text αλλά σε binary
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": gt

Θεωρείτε αντικειμενοστρεφές το παρακάτω πρόγραμμα? 7 Χρόνια 8 Μήνες πριν #4264

  • XristosTsa
  • Το Άβαταρ του/της XristosTsa
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
Ευχαριστώ πολυ για την βοηθεία Theo! :)
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.490 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου