¿Existe un equivalente de la reflexión de Java en Python?

La mejor respuesta

En Java y C #, la reflexión permite que el código interrogue a una clase o instancia para obtener las propiedades en ejecución hora. El término que usan en Python es «introspección». Consulte la Guía de introspección de Python para obtener más detalles.

Puede hacer algo como esto:

#define a class

class Foo:

def bar(self):

return 123

#get the list of methodsmethodNames = filter(lambda x: not x.startswith("\_"), dir(foo.\_\_class\_\_))

#call the first method

getattr(foo, methodNames[0])()

Sin embargo, Python no está escrito estrictamente, por lo que no existe realmente una noción de tipos autodescriptivos. Eso significa que algunas de las cosas para las que normalmente usamos la reflexión (modelos de entidad, serialización personalizada como JsonConvert, algunos patrones de IoC y trucos generales orientados a aspectos) no se traducen terriblemente bien. Por lo que he visto, la introspección de Python parece usarse principalmente para ayuda generada automáticamente.

Puede hacer algunas cosas usando convenciones de codificación, pero el compilador no va a ser capaz de hacer cumplir las cosas como esperaba. «Pensar en Python» requiere un poco de tiempo para acostumbrarse, y el lenguaje hace concesiones que son un poco inquietantes si se tiene un historial de tipos estrictos. Parte de la diversión es que puedes pasar más tiempo codificando código y menos tiempo codificando marcos. Solo se necesita un poco para acostumbrarse.

Responder

Python.

Ni siquiera lo piense para seleccionar otro idioma como el primero. ¿Por qué? Bueno,

  • Python es fácil. Confía en mí en este caso. Mi primer lenguaje importante fue C ++ y me llevó a contemplar un cambio de carrera. Aquí hay un pequeño fragmento de código C ++ para mostrar «Hola mundo» en la pantalla:

#include

int main() {

std::cout

return 0;

}

Esto es lo mismo en Python

print("Hello world!")

  • Python se escribe dinámicamente. ¿Qué demonios es eso? Bien, entonces las computadoras son tontas. No son lo suficientemente inteligentes como para saber que 1 es un número, o específicamente, un número entero y que «hola» es una palabra o «cadena» en el lenguaje informático. Entonces, por eso, algunos lenguajes de programación necesitaban especificar el tipo de cosas con las que estaban trabajando. Por ejemplo, si necesita agregar dos números en Java, esto es lo que tendrá que hacer:

class AddNums(){

public static void main(String args[]){

int first = 1;

int second = 2;

int sum = first + second;

System.out.println(sum);

}

}

¿Ve esa palabra clave «int»? Eso significa «entero» y básicamente le dice a la computadora: «Oye, necesito algo para almacenar este número, pero como eres demasiado estúpido para saber que es un número, lo he especificado y debes recordar que la variable llamado «primero» puede sólo almacenar valores enteros y le he dado el valor de 1. Y así sucesivamente con «segundo» y «suma» ”. Eso es lo que pasa con Java. ¿En Python?

first = 1

second = 2

sum = first + second

print(sum)

¿Ves lo limpio que es? Note la serena ausencia de punto y coma.

  • Python soporta todos los estilos de programación. Está bien, esto puede ser un poco controvertido, pero aún así vale la pena mencionarlo. En términos generales, hay dos métodos (sin juego de palabras) de programación: orientado a objetos y procedimental. No voy a entrar en detalles, pero, en pocas palabras, ambas son excelentes formas de abordar los problemas, pero la Orientación a objetos es más adecuada para proyectos a gran escala y, si se hace bien (una gran cosa en sí misma), será más limpia. . El procedimiento es mejor para proyectos pequeños para hacer las cosas, simplemente, hechas. Por ejemplo:

class Hello{

public static void main(String args[]){

System.out.println("Hello world!");

}

}

vs

def main():

print("Hello world!")

main()

  • Ahora tanto Python como Java son compatibles con OOP (programación orientada a objetos), pero Java lo obliga al no ofrecerle otros salida. Eso, para las grandes empresas y los proyectos a gran escala, puede ser algo bueno, pero para alguien que ni siquiera sabe qué es una clase puede ser una gran molestia. Python, por otro lado, te permite hacer tus propias cosas. Una vez más, esto puede ser algo malo, pero todo dependerá del tipo de prácticas que aprenda y siga. Ruby es otro lenguaje y es muy similar a Python, pero no me gusta tanto porque es mucho más indulgente con los programadores. Python mantiene esa fina línea.Pero sí, para un principiante, la Orientación a objetos puede sentirse forzada si todo lo que necesita hacer es escribir algo para tomar dos números e imprimir su suma, pero en el largo, realmente largo ejecutar, podría ser algo bueno.
  • Python se usa en casi todas partes. ¿Desarrollo web? Cheque. ¿Pruebas de penetración? Cheque. ¿Haciendo juegos increíbles? Cheque. ¿Pegar código para proyectos que no están escritos de forma nativa en Python? Cheque. Maching Learning? ¡Vuelve a comprobar a ese chico! ¿Investigación científica? Cheque. ¿Académica? Cheque. Aplicaciones de Android y otros proyectos escalables…? Java es lo tuyo. La programación nativa es un lugar donde Python falla.

Y creo que eso es todo. Ambos lenguajes son geniales en sí mismos y para lo que se usan, pero Python, sin duda, es una de las mejores cosas con las que un principiante podría comenzar hoy.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *