κεφάλαιο 11

Ξεκίνησε από user_83, 19 Μαρ 2017, 09:28:17 ΜΜ

« προηγούμενο - επόμενο »

user_83

υπάρχει κάποιο υλικο - πληροφρορία για το κεφάλαιο 11?

triantaf

η betty  παιρνει την ταχύτητα της  απο τον χρήστη
2 ) παραλλαγη η betty εχει ταχύτητα
3) dog

nefeli

Συνάδελφε ευχαριστούμε για τα αρχεία.

Σχετικά με την κλάση Dog όμως, μήπως μπορεί κάποιος να εξηγήσει τι εννοεί η τελευταία παράγραφος της σελίδας 201 του βιβλίου;

zsdregas

Παράθεση από: nefeli στις 27 Μαρ 2017, 08:49:50 ΜΜ
....
Σχετικά με την κλάση Dog όμως, μήπως μπορεί κάποιος να εξηγήσει τι εννοεί η τελευταία παράγραφος της σελίδας 201 του βιβλίου;
Έχει να κάνει με την αρχικοποίηση της ιδιότητας food, η οποία αρχικοποιείται στη μέθοδο eat. Δες και το παράδειγμα με την κλάση Vehicle1 στη σελίδα 200, και πιο συγκεκριμένα τις δύο τελευταίες παραγράφους.

nefeli

Σε ευχαριστώ για την απάντηση, αλλά δεν καταλαβαίνω πώς προκύπτει ότι η food είναι ιδιότητα της Dog. Θα το καταλάβαινα αν υπήρχε στην μέθοδο eat η δήλωση
self.food=food
αλλά δεν τη βλέπω.

nikiforos

nefeli και εγώ ακριβώς το ίδιο σκέφτηκα.
Από που κι ως που η food είναι ιδιότητα της Dog? αφού δεν έχει πουθενά εκχώρηση.
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init? Τι σόι αντικειμενοστρέφεια είναι αυτή? Μας δουλεύουν?
Καταστρατηγείται μια από τις θεμελιώδεις αρχές του OOP η ενθυλάκωση!!
Το συγκεκριμένο κεφάλαιο πρέπει να βγει όλο από την ύλη γιατί είναι απίστευτα κακογραμμένο.

zsdregas

Παράθεση από: nefeli στις 29 Μαρ 2017, 04:06:12 ΜΜ
Σε ευχαριστώ για την απάντηση, αλλά δεν καταλαβαίνω πώς προκύπτει ότι η food είναι ιδιότητα της Dog. Θα το καταλάβαινα αν υπήρχε στην μέθοδο eat η δήλωση
self.food=food
αλλά δεν τη βλέπω.
Έχεις δίκιο, συγνώμη.

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

Παράθεση από: nikiforos στις 29 Μαρ 2017, 04:59:46 ΜΜ
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init? Τι σόι αντικειμενοστρέφεια είναι αυτή? Μας δουλεύουν?
Καταστρατηγείται μια από τις θεμελιώδεις αρχές του OOP η ενθυλάκωση!!

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

evry

Υπάρχει διόρθωση στα παροράματα για το συγκεκριμένο σημείο. Έχει προστεθεί η εντολή self.food = food
και τώρα έχει νόημα.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

nefeli

Ακόμη και έτσι πάντως, η τελευταία πρόταση της σελ. 201 δεν είναι σωστή. Δηλαδή δεν μπορώ να παρεμβάλλω την
print Max.breed
πριν από την αρχικοποίηση της ιδιότητας Max.food; Συμφωνώ βέβαια με αυτό που έγραψε περί ενθυλάκωσης ο συνάδελφος, αλλά η python το επιτρέπει. 

zsdregas

Παράθεση από: 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__.
Κώδικας: python
class C: 
    classattr = "attr on class"

Δημιουργεί μάλιστα και μια ιδιότητα κλάσης, την classattr, και αφού δημιουργήσει αντικείμενο κλάσης C, δημουργεί και μια ιδιότητα αντικειμένου την instattr. Που σημαίνει ότι αν δημιουργήσουμε ένα νέο αντικείμενο κλάσης C, αυτό δε θα έχει την ιδιότητα instattr αλλά θα έχει την classattr.
Αν θέλουμε να το παρατραβήξουμε και λίγο, κι αυτό σωστό είναι, χωρίς να σημαίνει ότι είναι σωστή πρακτική ή ότι πρέπει να το διδάξουμε:
Κώδικας: python
class C: 
    classattr = "attr on class"
cobj = C()
cobj.instattr = "attr on instance"
def speak():
    print "Hello"
 
cobj.mila = speak
cobj.mila()


nefeli

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