
Είναι κάτι σαν το πρωτόκολλο Περιγραφέας Python εφαρμοστεί σε άλλες γλώσσες εκεί; Φαίνεται σαν ένα ωραίο τρόπο για να αυξήσουν σπονδυλωτής / ενθυλάκωση χωρίς φούσκωμα εφαρμογή που περιέχει την τάξη σας, αλλά εγώ ποτέ δεν έχω ακούσει για ένα παρόμοιο πράγμα σε οποιαδήποτε άλλη γλώσσα. Είναι πιθανό απουσιάζει από άλλες γλώσσες, λόγω της εναέριας αναζήτησης;

 
Python ανάλογο πρωτόκολλο Περιγραφέας σε άλλες γλώσσες;
=======================================================



Δεν έχω ακούσει για ένα άμεσο ισοδύναμο, είτε. Θα μπορούσε πιθανώς να επιτευχθεί το ίδιο αποτέλεσμα με μακροεντολές, ειδικά σε μια γλώσσα όπως η Lisp που έχει εξαιρετικά ισχυρές μακροεντολές.


Δεν θα είναι καθόλου έκπληξη αν άλλες γλώσσες αρχίσουν να ενσωματώσει κάτι παρόμοιο γιατί είναι τόσο ισχυρή.

 

Ruby και C #, τόσο εύκολα σας επιτρέπει να δημιουργήσετε accessors καθορίζοντας τις μεθόδους κτήτορας / setter για ένα χαρακτηριστικό, όπως και στην Python. Ωστόσο, αυτό δεν έχει σχεδιαστεί ώστε να επιτρέπει φυσικά μπορείτε να γράψετε τον κώδικα για τις μεθόδους αυτές σε άλλη κατηγορία με τον τρόπο που επιτρέπει την Python. Στην πράξη, δεν είμαι σίγουρος για το πόσο αυτό έχει σημασία, αφού κάθε φορά που έχω δει ένα χαρακτηριστικό που ορίζεται μέσω του πρωτοκόλλου Περιγραφέας τεθεί σε εφαρμογή της στην ίδια κατηγορία.


EDIT: καταριέται δυσλεξία μου (και με αυτό εννοώ απρόσεκτη ανάγνωση). Για κάποιο λόγο έχω διαβάσει πάντα «Περιγραφέας» ως «διακοσμητής» και το αντίστροφο, ακόμα και όταν είμαι αυτός πληκτρολόγηση και τα δύο. Θα αφήσω τη θέση μου άθικτο, δεδομένου ότι έχει έγκυρες πληροφορίες, αν και πληροφορίες που δεν έχει απολύτως καμία σχέση με το θέμα.


Ο όρος «διακοσμητής» μόνη της είναι στην πραγματικότητα το όνομα μιας πρότυπο σχεδιασμού που περιγράφεται στο περίφημο βιβλίο «Patterns Design». Το άρθρο της Wikipedia περιέχει πολλά παραδείγματα σε διάφορες γλώσσες προγραμματισμού χρήσης διακοσμητής: <http://en.wikipedia.org/wiki/Decorator_pattern>


Ωστόσο, οι διακοσμητές το εν λόγω άρθρο object-oriented? έχουν μαθήματα εφαρμογή ένα προκαθορισμένο interface που επιτρέπει μια άλλη υπάρχουσα τάξη συμπεριφέρονται με διαφορετικό τρόπο κατά κάποιο τρόπο, κλπ Python διακοσμητές ενεργούν με λειτουργικό τρόπο, αντικαθιστώντας μια λειτουργία κατά το χρόνο εκτέλεσης με άλλη λειτουργία, που σας επιτρέπει να τροποποιήσετε αποτελεσματικά / αντικαταστήσει τη λειτουργία αυτή, εισάγετε τον κωδικό, κλπ


Αυτό είναι γνωστό στον κόσμο Java ως Aspect-Oriented προγραμματισμού, και ο compiler AspectJ Java σας επιτρέπει να κάνετε αυτά τα είδη των πραγμάτων και να δημιουργήσετε τον κωδικό σας AspectJ (το οποίο είναι ένα υπερσύνολο της Java) σε Java bytecode.


Δεν είμαι αρκετά εξοικειωμένος με C # ή Ruby να γνωρίζουν τι τους εκδοχή του διακοσμητές θα είναι.

 