affectation de variable de classe comme valeur par défaut pour la méthode de classe argument

Je voudrais construire une méthode à l'intérieur d'une classe avec les valeurs par défaut des arguments tirés de cette classe. En général, je ne le filtrage des données. À l'intérieur de ma classe j'ai une méthode où, normalement, je passe vecteur de données. Parfois, je n'ai pas le vecteur, et je profite de données simulées. Chaque fois que je ne passe pas un particulier vecteur je voudrais profiter de l'aide de données simulées par défaut. J'ai pensé qu'il devrait être facile de la construction où à l'intérieur de ma définition de la méthode, je dis a=self.vector. Mais pour une raison que j'ai une erreur NameError: name 'self' is not defined. La simplification de la construction est:

class baseClass(object):  # This class takes an initial data or simulation
    def __init__(self):
        self.x = 1
        self.y = 2

class extendedClass(baseClass): # This class does some filtering
    def __init__(self):
        baseClass.__init__(self)
        self.z = 5
    def doSomething(self, a=self.z):
        self.z = 3
        self.b = a

if __name__ == '__main__':
    a = extendedClass()
    print a.__dict__
    a.doSomething()
    print a.__dict__

Une sortie que j'attendais devrait être:

{'y': 2, 'x': 1, 'z': 5}
{'y': 2, 'x': 1, 'z': 3, 'b': 5}

J'ai essayé de l'affectation par défaut comme def doSomething(self, a=z): évidemment, il ne fonctionne pas toujours. Autant je comprends self.z est visible dans ce champ d'application et ne devrait pas être un problème pour l'avoir comme valeur par défaut. Je ne sais pas pourquoi j'ai cette erreur et comment le faire. C'est probablement une question facile, mais j'essaie de le comprendre ou de trouver la solution sans manque quelque temps déjà. J'ai trouvé similaire questions seulement pour les autres langues.

InformationsquelleAutor tomasz74 | 2013-03-03