Topic: [Risolto]Come faccio questa cosa con le classi?  (Letto 129 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 299
  • Punti reputazione: 0
    • Mostra profilo
[Risolto]Come faccio questa cosa con le classi?
« il: Dicembre 12, 2018, 20:15 »
class Node(object):
    # [...]
    def expand(self, state):
        key = hash(state)
        if self[key] is None:
            self[key] = Node(state, self, self.depth+1)

        self.childs.append(self[key])

class MiniMaxNode(BaseNode):
    def __init__(self, state, parent=None, depth=0):
        super().__init__(state, parent, depth)

    def expand(self, state):
        super().expand(state)
        # [...]


E nel momento nel quale la estendo, invece di richiamare la riga:
"self[key] = Node(state, self, self.depth+1)"
vorrei invece richiamare:
"self[key] = MiniMaxNode(state, self, self.depth+1)"
senza dover sovrascrivere tutta il metodo, perchè sono certo che funzionerà sempre allo stesso modo, al massimo ci aggiungo codice ma di certo non tolgo da quel metodo
« Ultima modifica: Dicembre 13, 2018, 11:38 da tommyb1992 »

Offline tommyb1992

  • python neanderthalensis
  • ****
  • Post: 299
  • Punti reputazione: 0
    • Mostra profilo
Re:Come faccio questa cosa con le classi?
« Risposta #1 il: Dicembre 13, 2018, 11:37 »
Risolto così:
class Node(object):
    # [...]
    @classmethod
    def create(cls, state, inst):
        return cls(state, inst. inst.depth+1)

    def expand(self, state):
        key = hash(state)
        if self[key] is None:
            self[key] = self.create(state, self)

        self.childs.append(self[key])