Δημοσιεύτηκε: 16 Αύγ 2009, 18:47
από da_perama1
Επιτέλους σας έφθασα αν και άρχισα καθυστερημένος.
Spoiler: show
Κώδικας: Επιλογή όλων

#!/usr/bin/python3
#Filename: askisi3_9.py

class Animal:

population = 0

def __init__(self,name, stype, podia, skin):
self.name = name
self.type = stype
self.legs = podia
self.skin = skin
Animal.population += 1

def print_data (self):
print (' Όνομα : {0} Είδος : {1} Πόδια : {2} Κάλυμα : {3} '.format(self.name,self.type,self.legs,self.skin))

def __del__(self):
Animal.population -= 1
print ('Το ζώο {0} εγκαταλείπει το πρόγραμμα, εναπομείναντα ζώα {1} '.format(self.name, Animal.population))

def print_pop():
print (Animal.population)
print_pop = staticmethod(print_pop)


el = Animal('Ελέφαντας','Θηλαστικό',4,'δέρμα')
el.print_data()
Animal.print_pop()
pa = Animal('Παγώνι','Πτηνό',2,'Φτερά')
pa.print_data()
Animal.print_pop()
sa = Animal('Σαρδέλα','Ψάρι',0,'Λέπια')
sa.print_data()
Animal.print_pop()
sc = Animal('Σκορπιός','Έντομο',6,'Κέλυφος')
sc.print_data()
Animal.print_pop()

el.miti = 'προβοσκίδα'
print (el.miti)


del el
del sc
del sa
del pa
Animal.print_pop()


Παρατήρηση :
Spoiler: show
Όταν δίνουμε στο αντικείμενο ελέφαντας μία μεταβλητή ( miti ) που δεν είχε δηλωθεί στην κλάση στην οποία ανήκει, η python την αποδέχεται και στη συνέχεια μπορεί να χρησιμοποιηθεί όπως και οι άλλες, χωρίς αυτό να τροποποιεί ούτε την κλάση στην οποία ανήκει το αντικείμενο ούτε τα άλλα αντικείμενα που ανήκουν στην ίδια κλάση. Πολύ χρήσιμη ιδιότητα της γλώσσας !


Επίσης αν τερματήσουμε το πρόγραμμα χωρίς να έχουμε διαγράψει όλα τα αντικείμενα που δημιουργήσαμε βγαίνει ένα Exception AttributeError: για το οποίο καλό είναι να συζητήσουμε όταν φθάσουμε στο σημείο να μελετάμε τα Exceptions.
Οφείλω εδώ να ομολογήσω ότι έχω γράψει μερικά προγράμματα σε python στο παρελθόν, αλλά χρησιμοποιώ αυτή τη σειρά των μαθημάτων για να συστηματοποιήσω τις όποιες γνώσεις μου.