Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Propiedades: Ícono Y Significado
#1
Sad 
Python 3.10 | Visual Studio Code

Hola a todos

Cuando se va ingresado un Nombre después de un punto (a su vea previo ingreso de un Nombre de un Objeto), se muestra una Lista de Miembros con íconos característicos que indican la Naturaleza de los Miembros enlistados.

De acuerdo a la Documentación Oficial de Microsoft, desarrolladora de Visual Studio Code, el ícono de una pequeña cajita entre corchetes representa a una Variable.

Para asignar un Valor a una Variable se tiene la siguiente sintaxis:

Código:
Variable = Valor


Para configurar el rótulo de una ventana Tk se utiliza la Propiedad o Atributo title. Este por ser Propiedad tiene la misma Naturaleza de una Variable, por tanto debe esperarse que la asignación de un Valor a title, se tendría que aplicar el siguiente código


Código:
ventana.title="Sistema"

Sin embargo, esta Instrucción genera el Error: AtributeError: '_tkinter.tkapp' object has no attribute

Para realizar la correcta Configuración se debe realizar así

Código:
ventana.title("Sistema")

como si tratase de un Método y no de una Variable o Propiedad.

1° ¿Cuál es la forma oficial para referirse a estas "Propiedades", "Atributos" o "Variables"?
2° ¿Por qué estas "Propiedades" se configuran como Métodos si no lo son?

Desde ya Muchísimas Gracias
Responder
#2
Hola. Hay que tener en cuenta que el IDE (sea VS Code o cualquier otro) puede equivocarse y suele equivocarse. En este caso la equivocación está más o menos justificada, porque si vamos a la definición del atributo "title" (en el archivo tkinter/__init__.py), vemos esto:

  1. def wm_title(self, string=None):
  2.     """Set the title of this widget."""
  3.     return self.tk.call('wm', 'title', self._w, string)
  4.  
  5. title = wm_title


O sea, es una variable a la cual se le asignó una función, de ahí que VSCode lo considere un atributo en lugar de un método.

También tené en cuenta que la diferencia entre varibales y funciones (o atributos y métodos, si están dentro de una clase) no es tan tajante como parece. Por eso en Python en lugar de variables se habla de objetos. Un objeto es llamable (callable) si implementa el método __call__(). Las funciones son objetos que implementan ese método. Otros objetos (como las cadenas, los enteros, los booleanos, etc.) simplemente no implementan ese método. Pero son objetos en el mismo sentido que las funciones.

Los lenguajes compilados suelen hacer una distinción más clara entre funciones y variables. Pero incluso en en esos casos (por ejemplo, en C), tanto una variable como una función es simplemente un nombre para una dirección de memoria. La única diferencia es que la dirección de memoria a la que apunta el nombre de la función (que es la dirección la primera instrucción de la función) es una región ejecutable, mientras que a la que apunta el nombre de una variable es una región legible (y tal vez también escribible, writable, si no se trata de una constante).

En suma, "title" es formalmente un atributo, pero de hecho opera como un alias de una función.

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)