Αποστολέας Θέμα: κεφάλαιο 11  (Αναγνώστηκε 1697 φορές)

user_83

  • Οπαδός
  • **
  • Μηνύματα: 14
κεφάλαιο 11
« στις: 19 Μάρ 2017, 09:28:17 μμ »
υπάρχει κάποιο υλικο - πληροφρορία για το κεφάλαιο 11?

triantaf

  • Νέος
  • *
  • Μηνύματα: 8
Betty speed
« Απάντηση #1 στις: 27 Μάρ 2017, 12:31:55 μμ »
η betty  παιρνει την ταχύτητα της  απο τον χρήστη
2 ) παραλλαγη η betty εχει ταχύτητα
3) dog

nefeli

  • Θαμώνας
  • ***
  • Μηνύματα: 45
Απ: κεφάλαιο 11
« Απάντηση #2 στις: 27 Μάρ 2017, 08:49:50 μμ »
Συνάδελφε ευχαριστούμε για τα αρχεία.
 
Σχετικά με την κλάση Dog όμως, μήπως μπορεί κάποιος να εξηγήσει τι εννοεί η τελευταία παράγραφος της σελίδας 201 του βιβλίου;

zsdregas

  • Θαμώνας
  • ***
  • Μηνύματα: 48
  • You can't outsmart me cause I am a moron
Απ: κεφάλαιο 11
« Απάντηση #3 στις: 29 Μάρ 2017, 12:21:44 μμ »
....
Σχετικά με την κλάση Dog όμως, μήπως μπορεί κάποιος να εξηγήσει τι εννοεί η τελευταία παράγραφος της σελίδας 201 του βιβλίου;
Έχει να κάνει με την αρχικοποίηση της ιδιότητας food, η οποία αρχικοποιείται στη μέθοδο eat. Δες και το παράδειγμα με την κλάση Vehicle1 στη σελίδα 200, και πιο συγκεκριμένα τις δύο τελευταίες παραγράφους.

nefeli

  • Θαμώνας
  • ***
  • Μηνύματα: 45
Απ: κεφάλαιο 11
« Απάντηση #4 στις: 29 Μάρ 2017, 04:06:12 μμ »
Σε ευχαριστώ για την απάντηση, αλλά δεν καταλαβαίνω πώς προκύπτει ότι η food είναι ιδιότητα της Dog. Θα το καταλάβαινα αν υπήρχε στην μέθοδο eat η δήλωση
self.food=food
αλλά δεν τη βλέπω.

nikiforos

  • Νέος
  • *
  • Μηνύματα: 1
Απ: κεφάλαιο 11
« Απάντηση #5 στις: 29 Μάρ 2017, 04:59:46 μμ »
nefeli και εγώ ακριβώς το ίδιο σκέφτηκα.
Από που κι ως που η food είναι ιδιότητα της Dog? αφού δεν έχει πουθενά εκχώρηση.
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init? Τι σόι αντικειμενοστρέφεια είναι αυτή? Μας δουλεύουν?
Καταστρατηγείται μια από τις θεμελιώδεις αρχές του OOP η ενθυλάκωση!!
Το συγκεκριμένο κεφάλαιο πρέπει να βγει όλο από την ύλη γιατί είναι απίστευτα κακογραμμένο.

zsdregas

  • Θαμώνας
  • ***
  • Μηνύματα: 48
  • You can't outsmart me cause I am a moron
Απ: κεφάλαιο 11
« Απάντηση #6 στις: 29 Μάρ 2017, 08:41:40 μμ »
Σε ευχαριστώ για την απάντηση, αλλά δεν καταλαβαίνω πώς προκύπτει ότι η food είναι ιδιότητα της Dog. Θα το καταλάβαινα αν υπήρχε στην μέθοδο eat η δήλωση
self.food=food
αλλά δεν τη βλέπω.
Έχεις δίκιο, συγνώμη.

Λάμπρος Παπαδόπουλος

  • Βετεράνος
  • ****
  • Μηνύματα: 63
Απ: κεφάλαιο 11
« Απάντηση #7 στις: 30 Μάρ 2017, 09:53:44 πμ »
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init? Τι σόι αντικειμενοστρέφεια είναι αυτή? Μας δουλεύουν?
Καταστρατηγείται μια από τις θεμελιώδεις αρχές του OOP η ενθυλάκωση!!

Και πάλι δεν θα είχες ενθυλάκωση. Για να έχεις ενθυλάκωση πρέπει να γράψεις self.__attribute

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3165
  • to Iterate is human to Recurse divine
Απ: κεφάλαιο 11
« Απάντηση #8 στις: 30 Μάρ 2017, 10:36:21 μμ »
Υπάρχει διόρθωση στα παροράματα για το συγκεκριμένο σημείο. Έχει προστεθεί η εντολή self.food = food
και τώρα έχει νόημα.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

nefeli

  • Θαμώνας
  • ***
  • Μηνύματα: 45
Απ: κεφάλαιο 11
« Απάντηση #9 στις: 31 Μάρ 2017, 05:50:24 μμ »
Ακόμη και έτσι πάντως, η τελευταία πρόταση της σελ. 201 δεν είναι σωστή. Δηλαδή δεν μπορώ να παρεμβάλλω την
print Max.breed
πριν από την αρχικοποίηση της ιδιότητας Max.food; Συμφωνώ βέβαια με αυτό που έγραψε περί ενθυλάκωσης ο συνάδελφος, αλλά η python το επιτρέπει. 

zsdregas

  • Θαμώνας
  • ***
  • Μηνύματα: 48
  • You can't outsmart me cause I am a moron
Απ: κεφάλαιο 11
« Απάντηση #10 στις: 31 Μάρ 2017, 06:50:27 μμ »
Ακόμη και έτσι πάντως, η τελευταία πρόταση της σελ. 201 δεν είναι σωστή. Δηλαδή δεν μπορώ να παρεμβάλλω την print Max.breed πριν από την αρχικοποίηση της ιδιότητας Max.food; ... 
Και βέβαια μπορείς. Αυτό που δεν μπορείς να είναι να γράψεις print Max.food πριν εκτελεστεί η Max.eat("bone").
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init?
Η __init__ είναι κι αυτή μέθοδος και είναι δυνατό να μην υπάρχει. Στο παράδειγμα στη σελίδα 204, η κλάση δεν έχει __init__.
Κώδικας: Python
  1. class C:
  2.     classattr = "attr on class"
Δημιουργεί μάλιστα και μια ιδιότητα κλάσης, την classattr, και αφού δημιουργήσει αντικείμενο κλάσης C, δημουργεί και μια ιδιότητα αντικειμένου την instattr. Που σημαίνει ότι αν δημιουργήσουμε ένα νέο αντικείμενο κλάσης C, αυτό δε θα έχει την ιδιότητα instattr αλλά θα έχει την classattr.
Αν θέλουμε να το παρατραβήξουμε και λίγο, κι αυτό σωστό είναι, χωρίς να σημαίνει ότι είναι σωστή πρακτική ή ότι πρέπει να το διδάξουμε:
Κώδικας: Python
  1. class C:
  2.     classattr = "attr on class"
  3. cobj = C()
  4. cobj.instattr = "attr on instance"
  5. def speak():
  6.     print "Hello"
  7.  
  8. cobj.mila = speak
  9. cobj.mila()

nefeli

  • Θαμώνας
  • ***
  • Μηνύματα: 45
Απ: κεφάλαιο 11
« Απάντηση #11 στις: 31 Μάρ 2017, 07:26:10 μμ »
Το θέμα είναι ότι αν συμφωνούμε ότι η συγκεκριμένη πρόταση που γράφει το σχολικό βιβλίο δεν είναι σωστή, πρέπει να διαγραφεί ή τουλάχιστον να αλλάξει ώστε αυτό που γράφει να ισχύει.