Tengo alguna clase de interfaz, si numpy está disponible, proporcionaría algún método adicional para la clase (implementación más rápida)
Es posible definir alguna función basada en el éxito de una importación, pero el mismo código no funciona para los métodos de clase.
este codigo
try: import numpy def main2(): ret_array= numpy.array([],dtype=numpy.double) return ret_array except ImportError: def main2(): print ("do nothing") define con éxito un main2() que devuelve una matriz numpy vacía
Pero este código
class xxx: try: import numpy def main2(): ret_array= numpy.array([],dtype=numpy.double) return ret_array except ImportError: def main2(): print ("do nothing") resulta en una excepción si intento llamar a main2()
xxx.main2() Traceback (most recent call last): File "<interactive input>", line 1, in <module> File "test2.py", line 17, in main2 ret_array= numpy.array([],dtype=numpy.double) NameError: name 'numpy' is not defined¿Hay alguna otra manera de lograr esto? (según la disponibilidad de un módulo, defina un método de clase de manera diferente)
try: import numpy class xxx: def main2(self): ret_array = numpy.array([],dtype=numpy.double) print(ret_array) except: class xxx: def main2(self): print("do nothing")Tu podrías intentar:
class Test: def test(self): try: import numpy import_succeeded = True except: import_succeeded = False if import_succeeded: pass else: passGracias por todos los consejos que recibí.
la solución que voy a usar es:
try: import numpy except ImportError: numpy = None class xxx: if numpy: def main2(): ret_array= numpy.array([],dtype=numpy.double) return ret_array else: def main2(): print ("do nothing")