2017-10-21 7 views
-1

J'ai construit une classe pour gérer un grand nombre de fonctions différentes qui prennent des entrées communes. Cependant, je viens de me retrouver dans une situation où l'une des variables qui est passée par self doit être changée. Comment puis-je faire cela? Ceci est un exemple:Classe Variable Mise à jour

class Test: 
    def __init__(self, test_variable): 
     self.test_var = test_variable 

    @property 
    def some_function(self): 
     if self.test_var < 0: 
      self.test_var = 'New Output' #this is the line that I can't get 
              #get to work and I was hoping to update it here 
              #so I could use it in later functions 
     return self.test_var 

Merci!

+2

Quel est le problème que vous rencontrez exactement? Le code que vous avez posté fait exactement ce que vous attendez, autant que je sache. –

+0

Notez que si vous voulez 'self.test_var', vous appelez' self.some_function'. –

+0

A part le fait de ne pas pouvoir appeler 'some_function' plus d'une fois,' test_variable' est initialement négatif, quel est le problème? – James

Répondre

1

Vous devez supprimer l'attribut @property. Ensuite, vous pouvez le définir en faisant simplement x.test_var = 5. Par exemple,

class Test: 
    def __init__(self, test_variable): 
     self.test_var = test_variable 

    def some_function(self): 
     if self.test_var < 0: 
      self.test_var = 'New Output' #this is the line that I can't get 
              #get to work and I was hoping to update it here 
              #so I could use it in later functions 
     return self.test_var 

x = Test(-1) 

print(x.some_function()) 
x.test_var = 5 
print(x.some_function()) 

retours

New Output 
5 
+2

Vous avez supprimé le décorateur '@ property' de la méthode. Je pense que c'est peut-être là où il avait des problèmes. – James