Προς το περιεχόμενο

Διαχωρισμός των functions μιας class σε ξεχωριστά αρχεία για κάθε function για μείωση χώρου (python)


pi314

Προτεινόμενες αναρτήσεις

Έστω ότι έχω έναν κώδικα έτσι:
 

class test:

   def do_something_1():

      . . .

   def do_something_2():

      . . .

   def do_something_3():

      . . .

Προσπαθώ κάθε function να την κάνω ξεχωριστό αρχείο και κάπως να την καλώ για να μειώσω τον χώρο της κλάσης που είναι πολλές γραμμές κώδικα. Οπότε έκανα το εξής: την do_something_1 την αφαίρεσα τελείως και την έκανα αρχείο, έτσι: do_something_1.py, οπότε στην κλάση στην θέση της function, έχω import do_something_1.py ,αλλά βαράει ο compiler/interpreter. Ακολούθησα αυτό το άρθρο: https://microeducate.tech/how-can-i-separate-functions-of-class-into-multiple-files/

με λίγο αυτοσχεδιασμό, επειδή θέλω να καλώ όλη την function... Καμιά ιδέα?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Είναι αρκετά λάθος αυτό που πας να κάνεις. Δημιουργεί πολλά προβλήματα που, προφανώς, δεν έχεις ιδέα ότι μπορεί να υπάρχουν. Η δικαιολογία "το αρχείο είναι μεγάλο" είναι από τις πιο λάθος που έχω ακούσει ποτέ μου και φυσικά και θα σου "βαρέσει" ο interpreter. 

Εάν, μία στις 100.000, το αρχείο είναι όντως τόσο μεγάλο (π.χ. πάνω από 5000 γραμμές κώδικα) τότε έχεις κάνει λάθος στον σχεδιασμό της κλάσης. 

TL;DR: Μην το κανεις. Είναι λάθος.-

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators

Το να μεταφέρεις αλλού τον κώδικα όχι μόνο δεν σου λύνει κανένα πρόβλημα αλλά σου δίνει την ψευδαίσθηση ότι ο κώδικάς σου είναι "καλύτερος" σε σχέση με πριν. Η ποιότητα του κώδικα δε μετριέται με το πόσα κιλά κώδικας υπάρχει σε κάθε αρχείο ούτε τα προβλήματα ενός κακογραμμένου codebase λύνονται με ζογκλερικά. Αν πιστεύεις ότι κάτι είναι πιο περίπλοκο και πολύπλοκο απ' ό,τι χρειάζεται, τότε κάτσε και γράψε το απ' την αρχή (ή, αν αυτό δε γίνεται, δες πώς μπορείς να το βελτιώσεις).  

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
14 λεπτά πριν, Kercyn είπε

Το να μεταφέρεις αλλού τον κώδικα όχι μόνο δεν σου λύνει κανένα πρόβλημα αλλά σου δίνει την ψευδαίσθηση ότι ο κώδικάς σου είναι "καλύτερος" σε σχέση με πριν. Η ποιότητα του κώδικα δε μετριέται με το πόσα κιλά κώδικας υπάρχει σε κάθε αρχείο ούτε τα προβλήματα ενός κακογραμμένου codebase λύνονται με ζογκλερικά. Αν πιστεύεις ότι κάτι είναι πιο περίπλοκο και πολύπλοκο απ' ό,τι χρειάζεται, τότε κάτσε και γράψε το απ' την αρχή (ή, αν αυτό δε γίνεται, δες πώς μπορείς να το βελτιώσεις).  

Οκ, το καταλαβαίνω...αλλά επειδή δεν έχω χρόνο υπάρχει κάποιο ζουγκλερικό για αυτό??

Επεξ/σία από pi314
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators
14 λεπτά πριν, pi314 είπε

Οκ, το καταλαβαίνω...αλλά επειδή δεν έχω χρόνο υπάρχει κάποιο ζουγκλερικό για αυτό??

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

59 λεπτά πριν, pi314 είπε

Οκ, το καταλαβαίνω...αλλά επειδή δεν έχω χρόνο υπάρχει κάποιο ζουγκλερικό για αυτό??

Αυτό που πας να κάνεις είναι λάθος. Όχι γιατί το λέει ένας τυχαίος σε ένα forum, αλλά γιατί δεν λειτουργεί έτσι το θέμα. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ακουγεται και πολυ καλη πρακτικη, αλλα αν θελεις οπωσδηποτε να το κανεις, δες και εδω

https://stackoverflow.com/questions/47561840/how-can-i-separate-the-functions-of-a-class-into-multiple-files

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν έχεις φτάσει σε σημείο να χρειάζεσαι να σπάσεις τα functions μιας κλάσης σε διαφορετικά αρχεία  τότε μάλλον κάτι δεν είναι σωστό σε επίπεδο design

Μήπως η κλαση σου μπορεί να σπάσει σε υποκλάσεις...είτε λόγω κληρονομικότητας είτε...πολλά

Εαν αυτά δεν ισχύουν πιθανόν να χρειάζεσαι μια προσέγγιση του τύπου ...βρίσκω κοινά κομμάτια κώδικα και τα οδηγώ σε helper function/class/singleton....

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Από ότι βλέπω στα  διάφορα αποτελέσματα του google, με inheritance ΜΑΛΛΟΝ γίνεται δουλειά...

Επεξ/σία από pi314
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...