Base Class, con metodo che restituisce la classe derivata. difetto di progettazione?

-2

Sto scrivendo un risolutore di equazioni matematiche in python (per divertimento). Il primo progetto che mi è venuto in mente:

  • Expression : classe di base per ogni oggetto in un'equazione (forse un brutto nome).
  • BinaryExpression estende Expression : due espressioni con un segno.
  • Expression + Expression dovrebbe fornire un BinaryExpression , lo faccio sostituendo il metodo __add__ di Expression .

questa è una sorta di dipendenza circolare, che io e python odiamo entrambi.

class Expression(object):
    def __add__(self, other):
        return BinaryExpresison(self, OP.ADD, other)

class BinaryExpress(Expression):
    def __init__(self, op, other):
        pass # super and staff

Come lo faresti?

    
posta TheAnosmic 29.09.2014 - 19:54
fonte

1 risposta

-1

How would you do it?

Non ho familiarità con Python, ma quel tipo di costrutto per costruire un pattern composito o decoratore è qualcosa che ho fatto alcune volte (anche se in C # e C ++). Rende una interfaccia molto bella e un codice molto utile.

Se consideri la parte BinaryExpression e simili compositi / decoratori della libreria / API principale che tutti vorranno / utilizzeranno, il design è perfetto.

    
risposta data 29.09.2014 - 19:59
fonte

Leggi altre domande sui tag