Je suis nouveau sur Python et je tente de convertir du code fourni par un fournisseur de python 2 à 3. Cette fonction semble vérifier si une instance de la classe est déjà créée afin qu'elle ne crée pas un groupe de nouvelles instances mais je ne suis pas sûr de savoir comment le convertir en python 3. Le contrôle de classe de type vs une déclaration d'instance a surtout besoin de mondified depuis l'ancien vs nouveaux types dans pythong 2/3 mais je ne suis pas sûr de savoir comment faire . Toute aide est grandement appréciée.conversion python 2 à 3
def get_instance(self, classid = "Main", use_cache = TRUE):
""" Either get the cached logger instance or create a new one
Note that this is safe, even if you have your target set to sys.stdout
or sys.stderr
"""
cache = Logger.cache
if (type(classid) == ClassType):
classid = classid.__name__
elif (type(classid) == InstanceType):
classid = classid.__class__.__name__
# classid has to be lowercase, because the ConfigParser returns sections lowercase
classid = lower(classid)
if ((cache.has_key(classid)) and (use_cache == TRUE)):
cat = Logger.cache[classid]
else:
instance = Logger.instance
# test for targets which won't deep copy
targets = instance.__Logger_targets
deepcopyable = TRUE
for i in range(len(targets)):
if (type(targets[i]) == FileType):
deepcopyable = FALSE
if (deepcopyable == FALSE):
# swap the non-copyable target out for a moment
del instance.__Logger_targets
cat = copy.deepcopy(instance)
instance.__Logger_targets = targets
cat.__Logger_targets = targets
else:
cat = copy.deepcopy(instance)
cat.__Logger_classname = classid
# new categories have their own private Nested Diagnostic Contexts
self.__Logger_ndc = []
self.__Logger_classid = classid
cat.debug("Class %s instantiated" % classid)
if (use_cache == TRUE):
cache[classid] = cat
return cat
Avez-vous essayé d'utiliser le [outil de conversion] '2to3' (http://docs.python.org/2/library/2to3.html) – Kalyan02
Vous pouvez le faire automatiquement http: //docs.python.org/3/library/2to3.html – uKolka
Ceci est un code terrible. Vous devriez jsut le réécrire correctement dans Python3 –