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

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

Δημοσ.

καλησπέρα σε ολους

ασχολούμαι εδω και λίγο καιρό με την Python και έχω την εξής ερώτηση

1)γιατι σε μια κλάση στις συναρτήσεις παντα πρεπει να έχουμε μια παράμετρο self

2)που χρησιμευεί αυτη η γραμμη self.value = value {για παράμετρο ονοματι value}

ευχαριστώ πολύ

Δημοσ.

διαβάζοντας εδώ http://stackoverflow.com/questions/2709821/python-self-explained αυτό που κατάλαβα είναι εν μέρη σαν τον this της C/C++ απλά περνάει σαν παράμετρο στις μεθόδους των κλάσεων ώστε να έχεις πρόσβαση σε αυτόν.

Όσο για το 2 αν είχες απλώς το name

def myFunc( name):
    name = name

όπως βλέπεις παραπάνω δεν θα μπορούσες να κάνεις την "εκχώρηση".

Ίσως αντί διαβάσεις όλο το Post το άλλο αν δεις μόνο τον κώδικα Link.png Site: http://stackoverflow.com/a/6433556">αυτόν   να μπορέσει να σου λυθεί η απορία.

Δημοσ.

1)

 

self είναι αναφορά στο ίδιο το αντικείμενο για το οποίο καλείται μια μέθοδος (συνάρτηση της κλάσσης του αντικειμένου).

 

πες ότι έχεις την κλάσση foo με μέθοδο bar(self, x).

 

όταν γράφεις:

obj = foo()

obj.bar(10)

o interpreter αναλαμβάνει να καλέσει την bar ως:

bar(obj, 10)

H λογική για το ότι το self πρέπει να υπάρχει σαν παράμετρος στη μέθοδο έχει να κάνει με τη γενικότερη λογική που φτιάχτηκε η Python -> "Explicit is always better than implicit". Πχ στη C++ μια μέθοδος υλοποιείται από τον compiler προσθέτοντας το thιs όρισμα στις παραμέτρους (το λέω αρκετά μπακαλίστικα).

 

2)

 

Όταν γράφεις self.value αναφέρεσαι σε ένα attribute της κλάσσης που ονομάζεται value, το σκέτο value είναι το όρισμα της μεθόδου.

  • Like 1
Δημοσ.

Στην Python, το πρώτο argument σε μια instance method είναι πάντοτε το ίδιο το instance της κλάσης. Περνάμε δηλαδή το instance της κλάσης explicitly κάθε μέθοδο (εκτός αν έχουμε να κάνουμε με class ή static methods). Σα σύμβαση, το όρισμα αυτό το ονομάζουμε self. Αυτό έχει καθιερωθεί ως σύμβαση, δεν είναι όμως απαραίτητο (είναι όμως καλη πρακτική που συνίσταται να εφαρμόζεται). Επομένως, όταν γράφεις self.value αναφέρεσαι στη μεταβλητή value του συγκεκριμένουν instance, όταν γράφεις απλά value αναφέρεσαι στη local variable value. To self είναι το αντίστοιχο του "this" της C++/C#/Java.

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

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

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

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

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

Σύνδεση

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

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