Tengo que hacer un proyecto en python que sea compatible con la versión 2.7. hasta ahora usaba esta versión pero he llegado a un punto del código en el que me vendría genial poder usar @abstraclassmethod que solo está en la versión 3 en adelante.
Lo que quiero hacer es, dentro del código, tener en una variable la versión del intérprete y, en función de si es mayor o menor que 3, hacer una cosa u otra.
Aquí un fragmento de código:
Código:
#dentro de ModuloA.py
__INTERPRETER_VERSION = float(sys.version.split(" ")[0])
if(__INTERPRETER_VERSION >= 3):
from abc import abstractclassmethod
class AAA(object):
....
if(__INTERPRETER_VERSION < 3):
@classmethod
def createPacket(cls, bArray, escaped):
raise NotImplementedError("This method is not implemented in this class. See inheritance.")
else:
@abstractclassmethod
def createPacket(cls, bArray, escaped):
pass
El problema es que al ejecutar el código me dice que la variable _ModuloA__INTERPRETER_VERSION no está definida. Esto ya se que es por los dos guiones bajos.
Mis preguntas son:
1 - ¿Es buena idea hacer lo que estoy haciendo? ¿pongo simplemente la versión del 2.7 y ya está?
2 - ¿Cómo hago para definir una variable privada dentro del módulo y accederla dentro de las clases de dicho módulo?
Gracias, saludos.