Δημοσιεύτηκε: 26 Ιουν 2014, 16:45
από Ilias95
lucinos έγραψε:Όμως (και κατά την γνώμη μου άριστα) η Python δεν άλλαξε χαρακτήρα. Η Python παραμένει Python και οι κλάσσεις δεν είναι το ισχυρό χαρακτηριστικό. Το ισχυρό χαρακτηριστικό τής γλώσσας είναι οι συναρτήσεις.


Πάλι δεν λες γιατί, κατά τη γνώμη σου δεν είναι το δυνατό της σημείο.

Είναι μία γλώσσα που υποστηρίζει πλήρως τον OOP έχοντας μάλιστα και χαρακτηριστικά που άλλες γλώσσες δεν υποστηρίζουν όπως πχ. multiple inheritance. Αυτό που δεν σε αναγκάζει να κάνεις είναι strong encapsulation με restrictive access modifiers αλλά αυτό δεν είναι απαραίτητα κακό.

lucinos έγραψε:Αυτό ακόμα και αν δεν ξέρεις ιστορία είναι οφθαλμοφανές στην Python2. πχ

Δεν λέει κάτι αυτό. Και στην java τα primitive types δεν είναι objects. Γι' αυτό υπάρχουν οι primitive wrapper classes.

lucinos έγραψε:Η Python σχεδιάστηκε αρχικά δίχως κλάσσεις.

Αυτό δεν το ξέρω. Πηγή;

lucinos έγραψε:Ένας προγραμματιστής ποτέ δεν χρειάζεται να φτιάξει μια κλάσση για τον εαυτό του (μιλώ για την Python πάντα).

  • Αν χρησιμοποιήσεις κάποιο toolkit για να κάνεις GUI εφαρμογές αναγκαστικά θα δημιουργήσεις κλάσεις.
  • Αν χρησιμοποιήσεις κάποιο framework για να χτίσεις web εφαρμογές (που είναι και το σημείο που χρησιμοποιείται περισσότερο η python) αναγκαστικά θα δημιουργήσεις κλάσεις.
  • Αν θες να φτιάξεις μια δομή δικού σου τύπου με συγκεκριμένα χαρακτηριστικά πράγμα πολύ συχνό "αναγκαστικά" θα δημιουργήσεις κλάσεις.
  • Αν ψάξεις τον κώδικα οποιασδήποτε δημοφιλούς εφαρμογής γραμμένης σε python στο github πχ. είμαι σίγουρος ότι σε σχεδόν όλες θα δεις να χρησιμοποιούνται κλάσεις.

Οπότε δεν μπορώ να καταλάβω που το στηρίζεις το ότι ένας προγραμματιστής δεν δημιουργεί κλάσεις.

lucinos έγραψε:Υπάρχει πάντα κάτι έτοιμο που είναι αρκετό.

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

lucinos έγραψε:Εδώ φαίνεται και ένας προσωπικός μου κανόνας για τις κλάσσεις. Είναι πιστεύω λάθος να βάζουμε μη τετριμμένο κώδικα στις κλάσσεις. Αυτός που κοιτάει μια κλάσση θέλει να δει τι μεθόδους περιέχει. Ο όποιος κώδικας «κάνει δουλειά» πρέπει πάντα να βρίσκεται σε συναρτήσεις έξω από τις κλάσσεις. (διαφορετικά συσκοτίζει την κλάσση)

Αυτό όπως είπες όμως είναι η προσωπική σου άποψη. Νομίζω ότι συνηθίζεται περισσότερο ότι συναρτήσεις έχουν σχέση με μια κλάση ενσωματώνονται σ' αυτήν σαν static methods ώστε να είναι πιο οργανωμένος και κατανοητός ο κώδικας και να είναι πολύ πιο εύκολα διαχειρίσιμο το module. Και οι δύο τεχνικές έχουν valid points παρ' όλα αυτά.