υπάρχει κάποιο υλικο - πληροφρορία για το κεφάλαιο 11?
η betty παιρνει την ταχύτητα της απο τον χρήστη
2 ) παραλλαγη η betty εχει ταχύτητα
3) dog
Συνάδελφε ευχαριστούμε για τα αρχεία.
Σχετικά με την κλάση Dog όμως, μήπως μπορεί κάποιος να εξηγήσει τι εννοεί η τελευταία παράγραφος της σελίδας 201 του βιβλίου;
Παράθεση από: nefeli στις 27 Μαρ 2017, 08:49:50 ΜΜ
....
Σχετικά με την κλάση Dog όμως, μήπως μπορεί κάποιος να εξηγήσει τι εννοεί η τελευταία παράγραφος της σελίδας 201 του βιβλίου;
Έχει να κάνει με την αρχικοποίηση της ιδιότητας food, η οποία αρχικοποιείται στη μέθοδο eat. Δες και το παράδειγμα με την κλάση Vehicle1 στη σελίδα 200, και πιο συγκεκριμένα τις δύο τελευταίες παραγράφους.
Σε ευχαριστώ για την απάντηση, αλλά δεν καταλαβαίνω πώς προκύπτει ότι η food είναι ιδιότητα της Dog. Θα το καταλάβαινα αν υπήρχε στην μέθοδο eat η δήλωση
self.food=food
αλλά δεν τη βλέπω.
nefeli και εγώ ακριβώς το ίδιο σκέφτηκα.
Από που κι ως που η food είναι ιδιότητα της Dog? αφού δεν έχει πουθενά εκχώρηση.
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init? Τι σόι αντικειμενοστρέφεια είναι αυτή? Μας δουλεύουν?
Καταστρατηγείται μια από τις θεμελιώδεις αρχές του OOP η ενθυλάκωση!!
Το συγκεκριμένο κεφάλαιο πρέπει να βγει όλο από την ύλη γιατί είναι απίστευτα κακογραμμένο.
Παράθεση από: nefeli στις 29 Μαρ 2017, 04:06:12 ΜΜ
Σε ευχαριστώ για την απάντηση, αλλά δεν καταλαβαίνω πώς προκύπτει ότι η food είναι ιδιότητα της Dog. Θα το καταλάβαινα αν υπήρχε στην μέθοδο eat η δήλωση
self.food=food
αλλά δεν τη βλέπω.
Έχεις δίκιο, συγνώμη.
Παράθεση από: nikiforos στις 29 Μαρ 2017, 04:59:46 ΜΜ
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init? Τι σόι αντικειμενοστρέφεια είναι αυτή? Μας δουλεύουν?
Καταστρατηγείται μια από τις θεμελιώδεις αρχές του OOP η ενθυλάκωση!!
Και πάλι δεν θα είχες ενθυλάκωση. Για να έχεις ενθυλάκωση πρέπει να γράψεις self.__attribute
Υπάρχει διόρθωση στα παροράματα για το συγκεκριμένο σημείο. Έχει προστεθεί η εντολή self.food = food
και τώρα έχει νόημα.
Ακόμη και έτσι πάντως, η τελευταία πρόταση της σελ. 201 δεν είναι σωστή. Δηλαδή δεν μπορώ να παρεμβάλλω την
print Max.breed
πριν από την αρχικοποίηση της ιδιότητας Max.food; Συμφωνώ βέβαια με αυτό που έγραψε περί ενθυλάκωσης ο συνάδελφος, αλλά η python το επιτρέπει.
Παράθεση από: nefeli στις 31 Μαρ 2017, 05:50:24 ΜΜ
Ακόμη και έτσι πάντως, η τελευταία πρόταση της σελ. 201 δεν είναι σωστή. Δηλαδή δεν μπορώ να παρεμβάλλω την print Max.breed πριν από την αρχικοποίηση της ιδιότητας Max.food; ...
Και βέβαια μπορείς. Αυτό που δεν μπορείς να είναι να γράψεις print Max.food πριν εκτελεστεί η Max.eat("bone").
Παράθεση από: nikiforos στις 29 Μαρ 2017, 04:59:46 ΜΜ
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init?
Η __init__ είναι κι αυτή μέθοδος και είναι δυνατό να μην υπάρχει. Στο παράδειγμα στη σελίδα 204, η κλάση δεν έχει __init__.
class C:
classattr = "attr on class"
Δημιουργεί μάλιστα και μια
ιδιότητα κλάσης, την
classattr, και αφού δημιουργήσει αντικείμενο κλάσης C, δημουργεί και μια
ιδιότητα αντικειμένου την
instattr. Που σημαίνει ότι αν δημιουργήσουμε ένα νέο αντικείμενο κλάσης C, αυτό δε θα έχει την ιδιότητα
instattr αλλά θα έχει την
classattr.
Αν θέλουμε να το παρατραβήξουμε και λίγο, κι αυτό σωστό είναι, χωρίς να σημαίνει ότι είναι σωστή πρακτική ή ότι πρέπει να το διδάξουμε:
class C:
classattr = "attr on class"
cobj = C()
cobj.instattr = "attr on instance"
def speak():
print "Hello"
cobj.mila = speak
cobj.mila()
Το θέμα είναι ότι αν συμφωνούμε ότι η συγκεκριμένη πρόταση που γράφει το σχολικό βιβλίο δεν είναι σωστή, πρέπει να διαγραφεί ή τουλάχιστον να αλλάξει ώστε αυτό που γράφει να ισχύει.