user0x Δημοσ. 22 Φεβρουαρίου 2017 Δημοσ. 22 Φεβρουαρίου 2017 Καλησπέρα σας! Δυσκολεύομαι στο να καταλάβω τι είναι το self στην Python. Μπορεί κάποιος να μου το εξηγήσει και με παραδείγματα αν γινετε;
Apsinthos07 Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Καλησπέρα σας! Δυσκολεύομαι στο να καταλάβω τι είναι το self στην Python. Μπορεί κάποιος να μου το εξηγήσει και με παραδείγματα αν γινετε; Ξέρεις καθόλου Java ή C++ ή είναι η πρώτη σου επαφή με αντικειμενοστραφή προγραμματισμό;
pmav99 Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Για να στο εξηγήσει κάποιος σε layman terms θέλει ολόκληρο κατεβατό. Από που διαβάζεις; πρακτικά δεν υπάρχει βιβλίο που να μην το εξηγεί.
user0x Δημοσ. 23 Φεβρουαρίου 2017 Μέλος Δημοσ. 23 Φεβρουαρίου 2017 Έχω ψάξει για το self και σε pdf και σε βίντεο στο YouTube απλά δυσκολεύομαι να το καταλαβω.
pmav99 Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Τι διαφορά μεταξύ κλάσης και instance την έχεις καταλάβει;
user0x Δημοσ. 23 Φεβρουαρίου 2017 Μέλος Δημοσ. 23 Φεβρουαρίου 2017 Έχω ξεκινήσει από χθες να μαθαίνω με ότι έχει να κάνει με class στην Python και δεν έχω καταλάβει σχεδόν τίποτα.
k33theod Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Βασικά αυτό που έχει σημασία είναι να καταλάβεις πότε και πως να το χρησιμοποιείς όταν γράφεις κλάσσεις. Με δικά μου λόγια και να με συγχωρέσουν οι ειδικοί είναι ένα δείκτης στο αντικείμενο που θα δημιουργηθεί Το όνομα self είναι συμβατικό θα μπορούσε να είναι οτιδήποτε. Ο παρακάτω κώδικας ίσως σε φωτίσει λίγο >>> class Kati: def self_(self): print(type(self)) print(id(self)) >>> antikeimeno=Kati() >>> type(antikeimeno) <class '__main__.Kati'> >>> id(antikeimeno) 1720389913568 >>> antikeimeno.self_() <class '__main__.Kati'> 1720389913568 Αν προσέξεις το self και το antikeimeno έχουν το ίδιο id και τον ίδιο τύπο. Από την στιγμή όμως που ξεκίνησες χθες με κλάσεις προχώρα το λίγο ακόμα και θα το καταλάβεις https://docs.python.org/3/tutorial/classes.html http://www.python-course.eu/python3_object_oriented_programming.php Να συμπληρώσω ότι όταν καλείς μεθόδους δεν χρειάζεται να το γράφεις στις παραμέτρους η python το καλεί μόνη της (magic!)
user0x Δημοσ. 23 Φεβρουαρίου 2017 Μέλος Δημοσ. 23 Φεβρουαρίου 2017 Μόλις τώρα το κατάλαβα,το έβλεπα και σε κάποια βίντεο που έλεγαν ότι το self είναι το object και είχα κολλήσει τόσο πολύ αλλά με το παράδειγμα σου πραγματικά με φώτισες,σε ευχαριστώ πάρα πολύ!
k33theod Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Χαίρομαι Όταν καταλάβεις τις κλάσσεις αν θες ψάξτο παραπέρα Δες τι γίνεται αν δεν βάλεις το self (συνήθισμένο λάθος) έχει ενδιαφέρον >>> class Kati1: def func1(): print('hello') >>> ant1=Kati1() >>> ant1.func1() Traceback (most recent call last): File "<pyshell#44>", line 1, in <module> ant1.func1() TypeError: func1() takes 0 positional arguments but 1 was given >>> Λέει ότι δώσαμε ένα argument, ενώ δεν δώσαμε κανένα, και ψάχνεσαι και δεν βρίσκεις το λάθος σου Είναι επειδή βάζει μόνη της το self ασ μην το ορίσαμε πουθενά.
iceblade Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Χαίρομαι Όταν καταλάβεις τις κλάσσεις αν θες ψάξτο παραπέρα Δες τι γίνεται αν δεν βάλεις το self (συνήθισμένο λάθος) έχει ενδιαφέρον >>> class Kati1: def func1(): print('hello') >>> ant1=Kati1() >>> ant1.func1() Traceback (most recent call last): File "<pyshell#44>", line 1, in <module> ant1.func1() TypeError: func1() takes 0 positional arguments but 1 was given >>> Λέει ότι δώσαμε ένα argument, ενώ δεν δώσαμε κανένα, και ψάχνεσαι και δεν βρίσκεις το λάθος σου Είναι επειδή βάζει μόνη της το self ασ μην το ορίσαμε πουθενά. Όχι ακριβώς. Αυτό που συμβαίνει έιναι ότι όταν γράφεις ant1.func1() στην ουσία το ant1 πάει σαν πρώτο argument στο func1(), το οποίο έχεις ορίσει ότι δεν παίρνει arguments. Γιαυτό κ σου γράφει: "takes 0 positional arguments but 1 was given" Ουσιαστικά όταν γράφεις ant1.func1() είναι σα να γράφεις Kati1.func1(ant1). Το πρώτο argument δλδ είναι το instance (το ant1 στην προκειμένη περίπτωση), το οποίο στα instance methods κατά σύμβαση το λέμε "self". 1
gon1332 Δημοσ. 23 Φεβρουαρίου 2017 Δημοσ. 23 Φεβρουαρίου 2017 Είχα γράψει παλιότερα κάποια πραγματάκια για κλάσεις εδώ, αλλά για Java. Δε σε νοιάζει. Διάβασέ το κρατώντας τους όρους και βλέποντας τον κώδικα ίσα-ίσα για να ακολουθήσεις το παράδειγμα.
The King Δημοσ. 24 Φεβρουαρίου 2017 Δημοσ. 24 Φεβρουαρίου 2017 Μία απλή επεξήγηση με real-world παράδειγμα για αρχάριους που δυσκολεύονται στην κατανόηση του self variable στον Πύθωνα. The self variable in python explained
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα