Στο κεφάλαιο 11 και συγκεκριμένα στην ενότητα 11.3 γίνεται λόγος για το πως μπορούν να ορισθούν ιδιότητες σε μία κλάση.
Στο κείμενο αναφέρεται ότι μπορούμε να ορίσουμε μια ιδιότητα είτε μέσα σε μία κλάση, είτε σε ένα αντικείμενο μιας κλάσης και αφήνεται να εννοηθεί ότι το αποτέλεσμα είναι το ίδιο.
Αφήνοντας κατά μέρος το ότι παραβιάζονται οι προηγούμενες παροτρύνσεις ότι δεν πρέπει να αρχικοποιούμε ιδιότητες έξω από τον κατασκευαστή, δεν γίνεται σαφές ότι μια ιδιότητα κλάσης ισχύει για όλα τα αντικείμενα της κλάσης, ενώ μια ιδιότητα που ορίζεται σε ένα αντικείμενο ισχύει μόνο για αυτό.
Πέρα όμως από αυτό, ακόμα και οι ιδιότητες που ορίζονται στην κλάση δεν είναι απλή περίπτωση.
Ενώ όλα τα αντικείμενα της κλάσης μπορούν να διαβάσουν την τιμή τους, όταν κάποιο από αυτά την τροποποιήσει με το συμβολισμό Αντικείμενο.Ιδιότητα=Νέα_Τιμή, η τροποποίηση αυτή ισχύει μόνο για το συγκεκριμένο αντικείμενο.
Θα πρέπει να χρησιμοποιηθεί η έκφραση Κλάση.Ιδιότητα=Νέα_Τιμή για να αλλάξει η τιμή για όλα τα αντικείμενα και πάλι αυτό θα γίνει μόνο για αυτά στα οποία δεν έχει ήδη τροποποιηθεί μέσω του ονόματος του αντικειμένου, όπως φαίνεται και από το ακόλουθο κομμάτι κώδικα:
class Counter:
top=100
def __init__(self,i):
self.i=i
c1=Counter(50)
c2=Counter(20)
c3=Counter(30)
print c1.top, c2.top, c3.top
c1.top=80
print c1.top, c2.top, c3.top
Counter.top=150
print c1.top, c2.top, c3.top
που έχει σαν αποτέλεσμα:
100 100 100
80 100 100
80 150 150
Νομίζω ότι το κομμάτι αυτό δεν είναι σαφές και πιθανώς να χρειάζεται επαναδιατύπωση.