Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Gestion méthode copy héritage

+1 vote

J'ai une classe custom qui hérite d'un Dataset xarray (http://xarray.pydata.org).

L'idée est de "simplement" faire un container plus restreint avec des clés bien précise (pour des simulations physiques).

J'ai besoin de d'utiliser les méthodes copy et __copy__. Comme des méthodes propres aux Dataset utilisent copy en interne, je dois :

  • Conserver la mécanique copy des Dataset
  • Ne pas perdre les attributs et methodes de ma classe fille

Je suis arrivé au final à la solution suivante :

def copy(self, deep=False):
    new_dataset = super().copy(deep)
    new_dataset.__dict__.update(self.__dict__)
    return new_dataset

mais j'ai l'impression que ça sent le souffre. Je risque pas d'avoir des effets de bord un peu puants?

demandé 13-Sep par Poisson (272 points)

1 Réponse

+1 vote

Un petit coup de:

def copy(self, deep=False):
    " Overrides the parent class `copy` method "
    copied = super(TaClass, self).copy()
    copied = self.filter(copied)
    return copied

def filter(self, data):
    " Filetring logic here "
    ... logique de filtrage ...
    return filtered_data

C'est plus propre, pythonic, OO, et ça envoie du pâté

répondu 18-Oct par frague (484 points)
...