Δημοσιεύτηκε: 25 Ιουν 2014, 05:44
από Ilias95
@midkin
Γι' αυτό σου είπα να αποφύγεις το βιβλίο του Swaroop, γιατί σε κεφάλαια τόσο σημαντικά όσο ο αντικειμενοστραφής προγραμματισμός δεν εξηγεί σχεδόν τίποτα. Θα σε προέτρεπα να ψάξεις να βρεις άλλες πηγές για να διαβάσεις για αντικειμενοστρεφή σε python.

Πολύ χοντρικά και επειδή δεν έχω όρεξη να επαναλαμβάνω πράγματα χιλιογραμμένα.
Όταν φτιάξεις μία κλάση μπορείς να δημιουργήσεις διάφορα instances αυτής. Δημιουργείς δηλαδή objects το καθένα μπορεί να έχει ξεχωριστά χαρακτηριστικά. Το self είναι ο τρόπος για να αναφερθείς στα χαρακτηριστικά του κάθε object.

Παράδειγμα:
Κώδικας: Επιλογή όλων
class Person:
def __init__(self, a_name, an_age):
self.name = a_name
self.age = an_age

def sayHi(self):
print("I am {0} and I am {1} years old.".format(self.name, self.age))

giannis = Person("Giannis", 12)
hristos = Person("Hristos", 39)

giannis.sayHi();
hristos.sayHi();


Έξοδος:
Κώδικας: Επιλογή όλων
I am Giannis and I am 12 years old.
I am Hristos and I am 39 years old.


Η μέθοδος __init__() είναι ο constructor της κλάσης. Καλείται αυτόματα κατά την δημιουργία του αντικειμένου και τα ορίσματα της είναι αυτά που θα ορίσουμε στην δημιουργία του αντικειμένου.

Αν δεν χρησιμοποιήσεις το self σε μια μέθοδο σημαίνει ότι η μέθοδος σχετίζεται μόνο με την κλάση σαν κλάση και όχι με κάθε instance ξεχωριστά. Τότε είναι καλό να την δηλώσεις σαν staticmethod. Αλλά άστο αυτό για αργότερα αφού ξεκαθαρίσεις τα βασικά.