¿Cómo es todo un objeto en Python?

Python tiene la reputación de ser un lenguaje fácil de leer y escribir. Tiene una excelente documentación y una comunidad muy acogedora para principiantes.

A medida que profundizamos, podemos encontrar muchos aspectos del lenguaje Python que nos sorprendan, porque hay un aspecto que merece una explicación detallada. ¿Cómo es todo un objeto en Python? Dado que Python es un lenguaje de programación orientado a objetos y, por lo tanto, todo en Python es un objeto, cada número entero, cadena, lista y función lo es. Antes de discutir cómo todo es un objeto en Python, discutirá ¿Qué es un objeto?

¿Qué es un objeto?

Como ya sabemos que Python es un lenguaje de programación orientado a objetos y también que Todo en Python es un objeto, entonces el principal punto de discusión aquí es primero, ¿qué es un objeto? Entonces, en los lenguajes de programación orientados a objetos como Python, un objeto es una entidad que contiene datos junto con metadatos o funcionalidad asociados, estos datos contenidos en un objeto se denominan atributos de datos del objeto. Estos atributos son simplemente variables que se refieren a los datos. Los métodos son los procedimientos o la serie de actividades que se envían en un determinado orden o forma en que opera un objeto. Los métodos de objeto son funciones que realizan operaciones en los atributos de datos del objeto.

Un programa puede contener múltiples instancias de un objeto. Diferentes lenguajes de programación definen «objeto» de diferentes maneras. En algunas cosas, significa que todos los objetos deben tener atributos y métodos y en otras, simplemente significa que todos los objetos son clasificables. En el lenguaje de programación Python su definición es más flexible porque algunos objetos no tienen atributos o métodos y además no todos los objetos son clasificables.

Pero la afirmación «Todo en Python es un objeto» significa que puede asignarse a una variable o pasarse como argumento a una función. Por lo tanto, los objetos son los bloques de construcción de un programa orientado a objetos, porque un programa que usa tecnología orientada a objetos es esencialmente una colección de objetos. Entonces, los programas escritos en python también son una colección de estos objetos en forma de variables. Por lo tanto, es importante revisar que todo está en los objetos de Python, lo que significa que las cadenas son objetos, las listas son objetos, las funciones son objetos e incluso los módulos también son objetos.

Todo está en un objeto de Python:

En Python, casi todo es un objeto, ya sea un número, una función o incluso módulos. Python usa un modelo de objeto puro donde las clases son instancias de un «tipo» de metaclase. En Python, los términos «tipo» y «clase» son sinónimos. Y «tipo» es la única clase que es una instancia de sí misma. Este modelo de objetos puede ser útil cuando necesitamos información sobre un recurso en particular en Python. Además de las palabras clave de Python como «if def, globales», usando type() o dir() o simplemente escriba el nombre del recurso y presione enter; funcionará en casi cualquier cosa. Aclaremos qué significa esta afirmación de que «todo en Python es un objeto».

Considera lo siguiente:

Como sabemos muy bien que Python tiene tipos; sin embargo, los tipos no están vinculados a los nombres de las variables sino al propio objeto. Anteriormente, en lenguajes de programación orientados a objetos como Python, un objeto es una entidad que contiene datos junto con metadatos y/o funcionalidad asociados. En Python todo es un objeto, lo que significa que cada entidad tiene ciertos metadatos llamados «atributos» y una funcionalidad asociada llamada «métodos». Se accede a estos atributos y métodos a través de la sintaxis de punto.

Por ejemplo, antes vimos que las listas tienen un método de adición, que agrega un elemento a la lista y se accede a través de la sintaxis de punto (“.”):

Si bien se puede esperar que los objetos compuestos como las listas tengan atributos y métodos, lo que a veces no se espera es que incluso los tipos simples en Python tengan atributos y métodos adjuntos.

Por ejemplo, los tipos numéricos tienen un atributo real y un atributo de imagen que devuelven las partes real e imaginaria del valor, si se ven como un número complejo:

Los métodos son como atributos, excepto que son funciones a las que puede llamar usando paréntesis de apertura y cierre. Por ejemplo, los números de coma flotante tienen un método llamado is_integer que verifica si el valor es un número entero:

Cuando decimos que todo es un objeto en Python, en realidad queremos decir que todo es un objeto, incluso los atributos y métodos de los objetos son en sí mismos objetos con su propio tipo de información:

Implementación a través del lenguaje de programación C:-

Pasemos ahora a la implementación de C para ver cómo se representan las cosas.

Esos objetos se manejan bajo el capó como una estructura C llamada PyObject. Irónicamente, el modelo de objetos de CPython se implementa mediante C, un lenguaje no orientado a objetos. A partir de ahí notaremos las siguientes dos características:

  • Primero, un recuento de referencias, que realiza un seguimiento de cuántos otros objetos y variables hacen referencia a él. Esto se cambia en el código C a través de las macros Py_INCREF() y Py_DECREF().
  • En segundo lugar, escribe (una estructura PyTypeObject), que permite a Python determinar el tipo o la clase del objeto en tiempo de ejecución. Hay varios métodos en ese tipo que se utilizan para describir el comportamiento de la clase. Qué función llamar para asignar el tipo, manejar el tipo, convertirlo en un número, etc.

Clase integrada y clase de usuario:

Python viene con varias clases integradas, como int, str, list, pero también function o class. A diferencia de un lenguaje como Ruby donde todo es también un objeto, Python no permite agregar nuevos atributos o métodos a los tipos integrados como int o str.

Las declaraciones de estos objetos están en el directorio Incluir, y podemos encontrar diferentes implementaciones de diferentes tipos en Objeto:

int (Objects/longobject.c), str (Objects/unicodeobject.c), list (Objects/listobject.c), clases definidas por el usuario (Objects/classobject.c), funciones (Objects/funcobject.c), etc.

Cada uno de esos archivos define una instancia de PyTypeObject que representa el tipo. Todas las instancias de PyTypeObject contienen principalmente funciones que describen el comportamiento del tipo.

Por ejemplo, tp_getattro y tp_setattro, cuando están definidas, son las funciones que permiten leer y asignar un valor a un atributo respectivamente. La falta de tp_setattro para el tipo «int» explica por qué un atributo no se puede agregar o cambiar a un número entero. tp_as_sequence y tp_as_mapping se refieren a listas de métodos para manejar funciones estándar para funciones y diccionarios respectivamente.

Cuando el programa define una clase de usuario, el tiempo de ejecución crea un nuevo tipo para esa clase.

Conclusión:

¿Después de mucha discusión sobre cómo todo en python es una cosa? Concluimos que la programación orientada a objetos es una forma de pensar, es una forma de modelar realmente nuestro código y es mucho más fácil de leer. Los objetos son una forma bastante intuitiva de agrupar cosas similares, definiendo una plantilla similar. el concepto generalizado de esa cosa y sus atributos y métodos. Entonces, un objeto es una abstracción que nos permite programar sin tener que hacer un seguimiento manual de cada pequeña cosa.

Los objetos tienen dos propósitos, en primer lugar, contienen datos y tienen funciones para realizar algunos trabajos, estas funciones pueden usarse o no y/o cambiar los datos del objeto. Entonces entenderemos claramente que «Todo en Python» es solo una frase que tiene sentido cuando transferimos nuestro aprendizaje de lenguajes de programación del lenguaje C al lenguaje de programación Python y si uno es un principiante y comienza a aprender desde Python, entonces. Siempre debe recordarse que los datos de Python y las funciones apropiadas se mezclan en objetos.

Podemos entenderlo tomando un ejemplo de Números porque un número en C se llama número primitivo. Pero en Python, un número es un objeto porque puede manipularse de diferentes maneras porque ese número puede ser un ‘Número primo’ o un ‘Entero’ y les damos algunas funciones y propiedades específicas.

👉 Necesitas mas tutoriales de python ? aqui los tienes.

3 comentarios en «¿Cómo es todo un objeto en Python?»

  1. ¡Interesante debate sobre la naturaleza de los objetos en Python! ¿Qué opinan ustedes?

  2. ¡No entiendo por qué tanto debate sobre objetos en Python! ¿Tan complicado es? 🤔

    • ¡No es complicado, simplemente es un tema que genera muchas opiniones diferentes! Cada programador tiene su forma de ver las cosas. ¡A disfrutar del debate y aprender juntos! 😉🐍 #PythonForever

Los comentarios están cerrados.