Κλάσεις στην Python. Δημιουργία κλάσεων

Σχετικά έγγραφα
Κλάσεις στην Python. Δημιουργία κλάσεων

Εισαγωγή στα Αντικείμενα

Αντικειμενοστρεφής προγραμματισμός Object Oriented Programming (OOP) Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Γραφικά υπολογιστών Εργαστήριο 9 Κλάσεις στην Python. Σκοπός της 9ης άσκησης είναι να μάθουμε αντικειμενοστρεφή προγραμματισμό στην Python.

Εισαγωγή στους Υπολογιστές

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αντικειμενοστρεφής Προγραμματισμός

2.1 Αντικειµενοστρεφής προγραµµατισµός

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Κλάσεις και Αντικείµενα

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΕΤΑΡΤΗ 20 ΙΟΥΝΙΟΥ 2018

ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Κλάσεις και αντικείμενα #include <iostream.h<

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Οντοκεντρικός Προγραμματισμός

Θεωρία Πληροφορίας - Κώδικες. Γιαννακόπουλος Θεόδωρος

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

Εισαγωγή στους Υπολογιστές

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

Ανάπτυξη και Σχεδίαση Λογισμικού

(Διαφάνειες Νίκου Βιδάκη)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Λογισµικό (Software SW) Γλώσσες

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Τυπικός ορισμός και επίλυση προβλημάτων με την χρήση του search.py (Ιεραπόστολοι & Κανίβαλοι) Γαρμπής Γιώργος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

Γλωσσική Τεχνολογία. Object-Orientation in Python

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Πληρουορική Γ Γσμμασίοσ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων

Αντικειµενοστραφής Προγραµµατισµός

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Προγραμματιστικές τεχνικές

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Αντικειμενοστραφής Προγραμματισμός και JavaScript

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Wrapper Classes, Abstract Classes and Interfaces

ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΠΤΑ (7)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

How to register an account with the Hellenic Community of Sheffield.

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Δομές Δεδομένων & Αλγόριθμοι

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Βασικά της γλώσσας JAVA

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 8 : ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ & ΠΟΛΥΜΟΡΦΙΣΜΟΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

Προγραμματισμός με Logo στο MicroWorlds Pro

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Pascal. 15 Νοεμβρίου 2011

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

2.1. Εντολές Σχόλια Τύποι Δεδομένων

3 ο Εργαστήριο Μεταβλητές, Τελεστές

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

02 Αντικειμενοστρεφής Προγραμματισμός

Προγραµµατιστικές τεχνικές

Transcript:

Κλάσεις στην Python Στον προγραμματισμό γενικά προσπαθούμε να αποφεύγουμε τις επαναληπτικές εργασίες. Προσπαθούμε να γράφουμε κώδικα μία φορά και να τον χρησιμοποιούμε ξανά. Η αποφυγή της επανάληψης κώδικα επιτυγχάνεται με την χρήση συναρτήσεων. Οι συναρτήσεις τυποποιούν λειτουργίες. Όποτε το πρόγραμμα μας πρέπει να εκτελέσει αυτές τις λειτουργίες, καλούμε τις συναρτήσεις αυτές, περνώντας τις κατάλληλες παραμέτρους. Η χρήση συναρτήσεων δεν μας δίνει την δυνατότητα να αποθηκεύσουμε μέσα τους πληροφορίες. Οι τιμές των τοπικών τους μεταβλητών χάνονται μετά την επιστροφή εκτός αν περαστούν σαν παράμετροι, ή τις επιστρέψουν, οπότε η καλούσα συνάρτηση μπορεί να κρατήσει τις τιμές. Με τον αντικειμενοστραφή προγραμματισμό και την χρήση κλάσεων δίνεται η δυνατότητα διαχείρισης δεδομένων και συναρτήσεων με πολύ ολοκληρωμένο τρόπο. Στον αντικειμενοστραφή προγραμματισμό προτεραιότητα δίνεται στα δεδομένα και όχι στις συναρτήσεις όπως γίνεται στον διαδικαστικό προγραμματισμό (Procedural Programming). Η Python, σε αντίθεση με τη Java επιτρέπει δυναμικούς τύπους. Δημιουργία κλάσεων Μία κλάση είναι ένα πρότυπο. Δεν έχει υπόσταση από μόνη της. Είναι όπως τα σχέδια κατασκευής για αντικείμενα. Περιγράφει πως μπορεί να λειτουργήσει ένα ή περισσότερα αντικείμενα, που έχει ή έχουν δημιουργηθεί υλοποιώντας την κλάση. Παράδειγμα 1: Κώδικας για τον ορισμό μίας κλάσης # Defining a class class class_name: [statement 1] [statement 2] [statement 3] [etc.] Οι κλάσεις περιέχουν: πεδία (δεδομένα) μεθόδους (συναρτήσεις) 1

Παράδειγμα 2: Κώδικας για τη δημιουργία της κλάσης Shape: #An example of a class class Shape: def init (self,x,y): self.x = x self.y = y description = "This shape has not been described yet" author = "Nobody has claimed to make this shape yet" def area(self): return self.x * self.y def perimeter(self): return 2 * self.x + 2 * self.y def describe(self,text): self.description = text def authorname(self,text): self.author = text def scalesize(self,scale): self.x = self.x * scale self.y = self.y * scale Έχουμε δημιουργήσει μια περιγραφή ενός σχήματος όπως και τις μεταβλητές και τις ενέργειες που μπορούμε να κάνουμε με το Shape. Όμως δεν έχουμε κατασκευάσει ένα πραγματικό σχήμα, αλλά απλά έχουμε ορίσει την περιγραφή του τι είναι ένα Shape. Το Shape έχει πλάτος (x), ύψος (y), και μας δίνει την δυνατότητα να υπολογίσουμε το εμβαδόν και την περίμετρο του. Η συνάρτηση init εκτελείται όταν δημιουργήσουμε ένα αντικείμενο (instance ή στιγμιότυπο ) της Shape, δηλαδή, όταν δημιουργήσουμε ένα πραγματικό Shape, σε αντίθεση με το σχέδιο που έχουμε εδώ, τότε η init εκτελείται αυτόματα. Το self δείχνει ότι αναφερόμαστε σε στοιχεία της ίδιας της κλάσης. Αποτελεί την πρώτη παράμετρο σε όλες τις λειτουργίες που ορίζονται μέσα σε μια τάξη. Κάθε λειτουργία ή μεταβλητή που δημιουργήθηκε στο πρώτο επίπεδο της εσοχής, δηλαδή γραμμές κώδικα που ξεκινούν ένα tab δεξιά της θέσης όπου βάζουμε την κλάση Shape. Για πρόσβαση σε αυτές τις λειτουργίες και τις μεταβλητές 2

αλλού μέσα στην τάξη, το όνομά τους θα πρέπει να προηγείται η λέξη self ακολουθούμενη από μία τελεία (π.χ. self.variable_name). Χρήση μίας κλάσης Ενώ η κλάση είναι τα σχέδια, ή οι οδηγίες για την κατασκευή αντικειμένων, η δημιουργία των αντικειμένων (instances) είναι αυτή που δεσμεύει μνήμη για την αποθήκευση των πεδίων τους. (Ο κώδικας είναι κοινός για όλα τα αντικείμενα μίας κλάσης). Παράδειγμα 3: Κώδικας για τη δημιουργία αντικειμένου της κλάσης #creating an object rectangle = Shape(100, 45) Η συνάρτηση init καλείται αυτόματα. Δημιουργούμε ένα αντικείμενο ( στιγμιότυπο ) της κλάσης δίνοντας το όνομά του (σε αυτή την περίπτωση, το Shape) και, στη συνέχεια, σε παρένθεση, οι τιμές για να περάσει στη λειτουργία init. Η συνάρτηση init εκτελείται (χρησιμοποιώντας τις παραμέτρους που δόθηκαν σε παρένθεση) και, στη συνέχεια, κατασκευάζει ένα αντικείμενο της κλάσης, η οποία στην περίπτωση αυτή αποδίδεται στη μεταβλητή rectangle. Το αντικείμενο rectangle αποτελεί αυτοτελή συλλογή μεταβλητών και συναρτήσεων. Με τον ίδιο τρόπο που χρησιμοποιήσαμε την self για να αποκτήσουμε πρόσβαση στις συναρτήσεις και τις μεταβλητές της κλάσης μέσω της self, χρησιμοποιούμε το όνομα που της έχει ανατεθεί τώρα (rectangle) για την πρόσβαση στις λειτουργίες και τις μεταβλητές της κλάσης από έξω από την κλάση. Παράδειγμα 4: Πρόσβαση χαρακτηριστικών εκτός κλάσης #creating an object rectangle=shape(100,45) #finding the area of your rectangle: print(rectangle.area()) #finding the perimeter of your rectangle: print(rectangle.perimeter()) #describing the rectangle rectangle.describe('a wide rectangle') #making the rectangle 50% smaller 3

rectangle.scalesize(0.5) #re-printing the new area of the rectangle print(rectangle.area()) Παράδειγμα 5: Δημιουργία περισσότερων του ενός αντικειμένων long_rectangle = Shape (120,10) fat_rectangle = Shape (130,120) Κληρονομικότητα Παράδειγμα 6: Η κλάση Shape μπορεί να χρησιμοποιηθεί σαν βάση για τη δημιουργία παράγωγων κλάσεων με πιο εξειδικευμένα χαρακτηριστικά. #An example of a class class Shape: def init (self,x,y): self.x = x self.y = y description = "This shape has not been described yet" author = "Nobody has claimed to make this shape yet" def area(self): return self.x * self.y def perimeter(self): return 2 * self.x + 2 * self.y def describe(self,text): self.description = text def authorname(self,text): self.author = text def scalesize(self,scale): self.x = self.x * scale self.y = self.y * scale 4

Για να ορίσουμε μια νέα κλάση, π.χ. την κλάση Square, δηλαδή τετράγωνο, με βάση την προηγούμενη κλάση Shape, κάνουμε αυτό: Παράδειγμα 7: Κληρονομικότητα #An inherited class class Square(Shape): def init (self,x): self.x = x self.y = x Ο ορισμός της υποκλάσης γίνεται ακριβώς όπως ορίζεται μια κλάση, με την διαφορά ότι βάζουμε σε παρένθεση μετά το όνομα, το όνομα της μητρικής κλάση από την οποία κληρονομήσαμε. Έτσι έχουμε περιγράψει ένα τετράγωνο πολύ γρήγορα, χρησιμοποιώντας την κλάση Shape. Αυτό συμβαίνει γιατί έχουμε κληρονομήσει τα πάντα, από την κλάση Shape και αλλάξαμε μόνο ότι χρειάζεται να αλλάξει. Σε αυτή την περίπτωση, έχουμε επαναπροσδιορίσει την λειτουργία init του Shape, έτσι ώστε οι τιμές x και y να είναι πάντα ίδιες. Παράδειγμα 8 - DoubleSquare κατηγορία # The shape looks like this: # # # # class DoubleSquare(Square): def init (self,y): self.x = 2 * y self.y = y def perimeter(self): return 2 * self.x + 2 * self.y Στο παράδειγμα αυτό ορίζουμε ξανά την μέθοδο που υπολογίζει την περίμετρο, έτσι ώστε να μπορέσει να υπολογιστεί και η κοινή πλευρά εύκολα. 5

Λεξικά Τα λεξικά είναι συλλογές από δεδομένα, αταξινόμητα, τα οποία αποθηκεύουν ζευγάρια τιμών και χρησιμοποιούν σαν δείκτη την πρώτη. >>> d={} >>> d['nikos']='2810-323322' >>> d['makis']='2810-226676' >>> d['maria']='2810-334229' >>> d {'Nikos': '2810-323322', 'Makis': '2810-226676', 'Maria': '2810-334229'} >>> print(d['makis']) 2810-226676 >>> for x in d: print(x) Nikos Makis Maria >>> for x in d: print(d[x]) 2810-323322 2810-226676 2810-334229 >>> for x, y in d.items(): print(x, y) Nikos 2810-323322 Makis 2810-226676 Maria 2810-334229 >>> for x in d.values(): print(x) 2810-323322 2810-226676 2810-334229 >>> if 'Maria' in d: print('maria is in the d dictionary') 6

Maria is in the d dictionary >>> Παράδειγμα 9: Λεξικό # First, create a dictionary: dictionary = {} # Then, create some instances of classes in the dictionary: dictionary["doublesquare1"] = DoubleSquare(5) dictionary["long_rectangle"] = Shape(600,45) dictionary["doublesquare1"].authorname("the Gingerbread Man") #You can now use them like a normal class: print(dictionary["long_rectangle"].area()) print(dictionary["doublesquare1"].author) Από την ιστοσελίδα A Beginner's Python Tutorial/Classes, που βρίσκεται στο link: https://en.wikibooks.org/wiki/a_beginner%27s_python_tutorial/classes 7