7
votes

Python équivalent à la déclaration de C #

Dupliqué possible: strong>
Quel est l'équivalent du c # "en utilisant" Bloc dans IronPython? P>

J'écris du IronPython en utilisant des objets jetables .NET et vous vous demandez s'il existe une belle façon "pythonique" de faire cela. Actuellement, j'ai un tas d'énoncés enfin (et je suppose qu'il devrait y avoir des chèques pour personne dans chacun d'eux aussi - ou la variable n'existe même pas si le constructeur échoue?) P>

def Save(self):
    filename = "record.txt"
    data = "{0}:{1}".format(self.Level,self.Name)
    isf = IsolatedStorageFile.GetUserStoreForApplication()
    try:                
        isfs = IsolatedStorageFileStream(filename, FileMode.Create, isf)
        try:
            sw = StreamWriter(isfs)
            try:
                sw.Write(data)
            finally:
                sw.Dispose()
        finally:
            isfs.Dispose()
    finally:
        isf.Dispose()


0 commentaires

4 Réponses :


9
votes

Python 2.6 introduit le avec la relève , qui permet de nettoyer automatiquement les objets lorsqu'ils quittent le avec la relève . Je ne sais pas si les bibliothèques IronPython le supportent, mais ce serait un ajustement naturel.

question DUP avec réponse autorité: est l'équivalent du bloc C # "en utilisant" dans ironpython?


1 commentaires

merci, cela m'a conduit à cette question: Stackoverflow.com/questions/1757296/... , que je n'ai pas trouvé dans mes recherches précédentes



0
votes

Si je comprends bien correctement, il semble que l'équivalent est le avec déclaration. Si vos classes définissent les gestionnaires de contexte, ils seront appelés automatiquement après le bloc.


0 commentaires

2
votes

Je pense que vous recherchez le avec déclaration . Plus d'infos ici .


0 commentaires

0
votes

Votre code avec quelques commentaires:

sw.Dispose()


1 commentaires

Vous pouvez également utiliser avec une déclaration avec une classe IsolateStorageFile, si nécessaire.