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

ΟΟP Python


mixos23

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

Καλησπερα, εχει κανενα 2μηνo που ξεκινησα να μαθαινω Python. Οταν εφτασα ΟΟP σκεφτηκα οτι πρεπει να  μεινω λιγο ωστε να προσπαθησω να μαθω οσο «καλυτερα μπορω» , οποτε αγορασα απο Udemy ενα course .
https://www.udemy.com/course/object-oriented-programming-with-modern-python/


Σαν πρωτο κεφαλαιο εχει τιτλο classes .
Τα πρωτα βιντεο τα ψιλοκαταλαβα ευκολα , ειχα δει ομως και 2-3 βιντεο του Corey Schafer στο Youtube βεβαια που βοηθησαν.
Instances methods ηταν οκ, και μετα παταει ενα @classsmethod , @staticmethod απο πανω και αυτο ηταν.
Δεν εξηγουσε γιατι, να δωσει κανενα παραδειγμα, ποτε επιλεγουμε τι  κλπ, καποια ασκηση..
απλα εφτιαξε μια classmethod που ειχε μια print και εδειξε οτι ηταν accessible απο την class και απο instances. 
Νοοb ειμαι αλλα θεωρω πως ειναι κατι σημαντικο που πρεπει να μαθω

Σκεφτομαι τα εξης:

1) να συνεχισω και οτι πιασω απο τα υπολοιπα που εχει, και να δοκιμασω και καποιο αλλο course/tutorial /video ισως. 
2) να προσπαθησω refund και να δοκιμασω καποιο αλλο course.


τι λετε ως πιο εμπειροι ? 

16856512391042.jpg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...
Δημοσ. (επεξεργασμένο)

Καλύτερα θα είναι όπου κολλάς να κάνεις ερωτήσεις για το σημείο που κόλλησες. Το μάθημα αυτό ίσως κακώς προϋποθέτει ότι ξέρεις την διαφορά μεταξύ ενός class method και ενός static method στην Python. 

Τόσο οι class methods όσο και οι static methods είναι τύποι μεθόδων που σχετίζονται με την κλάση, αντί για τις στιγμιότυπα (instances) της κλάσης. Ωστόσο, η βασική τους διαφορά έγκειται στο αν έχουν πρόσβαση στην κατάσταση της κλάσης ή όχι.

Οι class methods παίρνουν την κλάση ως πρώτο όρισμα, το οποίο συνήθως αναφέρεται ως cls. Αυτές οι μέθοδοι μπορούν να αλλάξουν την κατάσταση της κλάσης που μπορεί να επηρεάσει όλα τα στιγμιότυπα της κλάσης. Στην Python, μια class method δηλώνεται με τον decorator @classmethod.

Οι static methods δεν παίρνουν ούτε την κλάση ούτε την instance ως όρισμα. Είναι βασικά ανεξάρτητες από τον ορισμό της κλάσης, εκτός από το γεγονός ότι βρίσκονται στο χώρο ονομάτων της κλάσης. Αυτές οι μέθοδοι δεν μπορούν να αλλάξουν την κατάσταση της κλάσης ή την κατάσταση του instance. Στην Python, μια static method δηλώνεται με τον decorator @staticmethod.

Έτσι, η επιλογή μεταξύ class method και static method εξαρτάται από το εάν χρειάζεσαι πρόσβαση στην κατάσταση της κλάσης ή όχι. Αν όχι, θα προτιμήσεις να χρησιμοποιήσεις την static method.
 

Επεξ/σία από vasper
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οι static methods μια χαρά μπορούν να αλλάξουν την κατάσταση του instance, θα έλεγε κανείς πως όποιος γράφει το αντίστροφο, δεν γνωρίζει από Python. Π.χ.: https://onecompiler.com/python/3zbkqkbt9

Δεν είναι κάτι περίπλοκο οι class και static μέθοδοι. Προσπάθησε με τα παραδείγματα που έχεις και θα τα καταφέρεις. 

Στις 1/6/2023 στις 11:36 ΜΜ, mixos23 είπε

Καλησπερα, εχει κανενα 2μηνo που ξεκινησα να μαθαινω Python. Οταν εφτασα ΟΟP σκεφτηκα οτι πρεπει να  μεινω λιγο ωστε να προσπαθησω να μαθω οσο «καλυτερα μπορω» , οποτε αγορασα απο Udemy ενα course .
https://www.udemy.com/course/object-oriented-programming-with-modern-python/


Σαν πρωτο κεφαλαιο εχει τιτλο classes .
Τα πρωτα βιντεο τα ψιλοκαταλαβα ευκολα , ειχα δει ομως και 2-3 βιντεο του Corey Schafer στο Youtube βεβαια που βοηθησαν.
Instances methods ηταν οκ, και μετα παταει ενα @classsmethod , @staticmethod απο πανω και αυτο ηταν.
Δεν εξηγουσε γιατι, να δωσει κανενα παραδειγμα, ποτε επιλεγουμε τι  κλπ, καποια ασκηση..
απλα εφτιαξε μια classmethod που ειχε μια print και εδειξε οτι ηταν accessible απο την class και απο instances. 
Νοοb ειμαι αλλα θεωρω πως ειναι κατι σημαντικο που πρεπει να μαθω

Σκεφτομαι τα εξης:

1) να συνεχισω και οτι πιασω απο τα υπολοιπα που εχει, και να δοκιμασω και καποιο αλλο course/tutorial /video ισως. 
2) να προσπαθησω refund και να δοκιμασω καποιο αλλο course.


τι λετε ως πιο εμπειροι ? 

16856512391042.jpg

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...
Στις 14/6/2023 στις 8:32 ΜΜ, DrKo είπε

Οι static methods μια χαρά μπορούν να αλλάξουν την κατάσταση του instance, θα έλεγε κανείς πως όποιος γράφει το αντίστροφο, δεν γνωρίζει από Python. Π.χ.: https://onecompiler.com/python/3zbkqkbt9

Δεν είναι κάτι περίπλοκο οι class και static μέθοδοι. Προσπάθησε με τα παραδείγματα που έχεις και θα τα καταφέρεις. 

 

Ναι μπορούν αν πάρουν το instance ως όρισμα, αλλά αυτό θα ίσχυε για οποιαδήποτε method.

Η απάντηση του φίλου πιο πάνω είναι ακριβής με βάση το πνεύμα της ερώτησης.

Υ.Γ.: Καλό είναι να μην είσαι τόσο σκληρός στα σχόλιά σου, τη γνώμη/γνώση μας καταθέτουμε όλοι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 25/6/2023 στις 1:31 ΠΜ, Sta είπε

Ναι μπορούν αν πάρουν το instance ως όρισμα, αλλά αυτό θα ίσχυε για οποιαδήποτε method.

Η απάντηση του φίλου πιο πάνω είναι ακριβής με βάση το πνεύμα της ερώτησης.

Υ.Γ.: Καλό είναι να μην είσαι τόσο σκληρός στα σχόλιά σου, τη γνώμη/γνώση μας καταθέτουμε όλοι.

Άρα, το σχόλιο παραπάνω είναι λάθος σε οποιαδήποτε περίπτωση, μιας και οποιαδήποτε μέθοδος θα μπορούσε να πάρει ως όρισμα το αντικείμενο. Άρα, για να δώσει κανείς τόσο λάθος απάντηση, δεν γνωρίζει πώς λειτουργούν γενικά οι μέθοδοι μιας (όπως και εσύ λες) γενικά θα μπορούσε να γίνει αυτό.

Άρα, όταν κανείς δεν ξέρει γενικά πως λειτουργούν οι μέθοδοι στην Python, τότε σίγουρα δεν ξέρει και την ειδική περίπτωση των static.

Ο.Ε.Δ.

Τώρα, για το τι θα ήταν καλό να κάνω και τι όχι, δεν σου πέφτει λόγος. Σόρρυ. 

Υ.Γ. Και για την ακρίβεια, και εσύ είσαι λάθος. Όχι, οποιαδήποτε μέθοδος διαφέρει από τις static. Το πώς και το γιατί και τι τρέχει τελικά με το όρισμα “self”, είναι άλλη ιστορία. 

Υ.Γ.2 και όχι, δεν είναι θέμα γνώμης και πνεύματος. Ο προγραμματισμός είναι τεχνικό θέμα και αυτά δεν χωράνε. Συγκεκριμένα, γράφτηκε:

Στις 10/6/2023 στις 8:39 ΜΜ, vasper είπε

Αυτές οι μέθοδοι δεν μπορούν να αλλάξουν την κατάσταση της κλάσης ή την κατάσταση του instance.

Έτσι, η επιλογή μεταξύ class method και static method εξαρτάται από το εάν χρειάζεσαι πρόσβαση στην κατάσταση της κλάσης ή όχι. 

Το οποίο είναι λάθος, παρέθεσα και κώδικα που το αποδεικνύει. Κάθε τι άλλο, είναι άσχετο. Το συγκεκριμένο claim είναι αντικειμενικά λάθος, και δεν χωράνε «πνεύματα» ή ό,τι άλλο.

Και γίνεται να αλλάξει η κατάσταση του αντικειμένου και γίνεται να έχει κανείς πρόσβαση στην κατάσταση του αντικειμένου/κλάσης. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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