Δημοσιεύτηκε: 24 Αύγ 2011, 22:41
Ilias95 έγραψε:pmav99 έγραψε:Για την έκδοση 3 μπορείς να βάλεις σα στόχο να μετατρέψεις το πρόγραμμα από procedural σε Object Oriented. To πρόβλημα προσφέρεται.
Έτσι όπως το έχεις τώρα χρησιμοποιείς κατά κόρον global μεταβλητές που δεν είναι καλή πρακτική και δυνητικά μπορεί να οδηγήσει σε περίεργα bugs. Better be explicit than implicit. Καλύτερα να περνάς τις μεταβλητές σου σε κάθε συνάρτηση, παρά να ψάχνεσαι τι είναι τι και από που έρχεται
Εννοείς τις μεταβλητές που αφορούν τις επαφές να τις περάσω και αυτές μες τις κλάσεις; Δεν το σκέφτηκα έτσι. Θα το δοκιμάσω...
Οπότε και οι μεταβλητές θα γίνουν μεταβλητές κλάσεις ε;
Πάντως δυσκολεύομαι να δω πως θα γίνει. Ας πούμε μια συνάρτηση σαν την edit_contact() τι να την κάνω;
Η edit_contact() ζητάει πρώτα απ' το χρήστη να δώσει τον Α/Α μιας επαφής και ύστερα κάνει αλλαγές στις self.* μεταβλητές του. Όμως δεν μπορώ να την περάσω σαν μέθοδο στην κλάση ,καθώς δεν ξέρω από πριν ποια υπόσταση της κλάσης θα χρειαστώ.
Άρα έχω δύο επιλογές (ή όχι;). Η μία είναι να την περάσω μέσα στην κλάση σαν staticmethod και τις υπόλοιπες το ίδιο αλλά δεν θα χει και καμιά ουσιώδη διαφορά νομίζω.
Η άλλη είναι να την σπάσω σε δύο συναρτήσεις, μια που να ζητάει τον Α/Α και να είναι static ή classmethod (αλήθεια δεν κατάλαβα την διαφορά ακόμα), και στην δεύτερη να γίνετε η επεξεργασία και να είναι κανονικά μέθοδος της κλάσης.
Χμμ. Τι προτείνεις;
Edit: Πόσταρες ενώ έγραφα, κάτσε να το δω πρώτα για να αναθεωρήσω...