Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Aprendiendo Python: de cero a héroe / Tutorial [1-2]  (Visto 396 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline markxj6 Posteado: May 24, 2021, 10:39:57 PM | Modificado: May 24, 2021, 10:43:53 PM by markxj6

  • 0 puntos por ventas
  • *
  • Rank: Destacado
  • Posts: 92
  • Gracias recibida: 1236
  • ro
Aprendiendo Python: de cero a héroe

programa que usaremos para este artículo


Esta es una continuación y el final del tutorial 1: https://tuservermu.com.ve/index.php?topic=42277


Vamos?  boxing


Entonces, cuando creamos el objeto del vehículo , podemos definir estos atributos .

Imagina que amamos el Tesla Model S y queremos crear este tipo de objeto .
Tiene cuatro ruedas, funciona con energía eléctrica, tiene espacio para cinco asientos y la velocidad máxima es de 250 km / hora (155 mph).

Creemos este objeto:

Code: [Select]
tesla_model_s  =  Vehículo ( 4 , 'eléctrico' , 5 , 250 )

Cuatro ruedas + eléctrico “tipo tanque” + cinco plazas + velocidad máxima 250km / hora.

Se establecen todos los atributos. Pero, cómo podemos acceder a los valores de estos atributos?

Enviamos un mensaje al objeto preguntando por ellos.
Lo llamamos método.

Es el comportamiento del objeto.

Implementémoslo:


Code: [Select]
class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

    def number_of_wheels(self):
        return self.number_of_wheels

    def set_number_of_wheels(self, number):
        self.number_of_wheels = number

Esta es una implementación de dos métodos: number_of_wheels y set_number_of_wheels . Lo llamamos getter & setter. Porque el primero obtiene el valor del atributo y el segundo establece un nuevo valor para el atributo.

En Python, podemos hacerlo usando @property(decorators) para definir getters y setters. Veámoslo con código:

Code: [Select]
class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity
   
    @property
    def number_of_wheels(self):
        return self.__number_of_wheels
   
    @number_of_wheels.setter
    def number_of_wheels(self, number):
        self.__number_of_wheels = number


Y podemos usar estos métodos como atributos:

Code: [Select]
tesla_model_s = Vehicle(4, 'electric', 5, 250)
print(tesla_model_s.number_of_wheels) # 4
tesla_model_s.number_of_wheels = 2 # setting number of wheels to 2
print(tesla_model_s.number_of_wheels) # 2

Esto es ligeramente diferente a la definición de métodos.

Los métodos funcionan como atributos.

Por ejemplo, cuando establecemos el nuevo número de ruedas, no aplicamos dos como parámetro, sino que establecemos el valor 2 en number_of_wheels. Esta es una forma de escribir pythonic getter y setter codificar.

Pero también podemos usar métodos para otras cosas, como el método " make_noise ". Vamos a verlo:

Code: [Select]
class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

    def make_noise(self):
        print('VRUUUUUUUM')

Cuando llamamos a este método, solo devuelve una cadena “ VRRRRUUUUM. "

Code: [Select]
tesla_model_s = Vehicle(4, 'electric', 5, 250)
tesla_model_s.make_noise() # VRUUUUUUUM

Encapsulación: Ocultar información

La encapsulación es un mecanismo que restringe el acceso directo a los datos y métodos de los objetos.

Pero al mismo tiempo, facilita la operación sobre esos datos (métodos de objetos).


“La encapsulación se puede utilizar para ocultar los miembros de datos y la función de los miembros. Según esta definición, encapsulación significa que la representación interna de un objeto generalmente está oculta a la vista fuera de la definición del objeto ". - Wikipedia

Toda representación interna de un objeto está oculta al exterior. Solo el objeto puede interactuar con sus datos internos.
En primer lugar, tenemos que entender cómo public y non-public de instancia de variables y métodos de trabajo.

Variables de instancia pública
Para una clase de Python, podemos inicializar un public instance variabledentro de nuestro método constructor.

Veamos esto:
Dentro del método constructor:

Code: [Select]
class Person:
    def __init__(self, first_name):
        self.first_name = first_name

Aquí aplicamos el first_name valor como argumento al public instance variable.

Code: [Select]
xj = Person('XJ')
print(xj.first_name) # => XJ


Dentro de la clase:

Code: [Select]
class Person:
    first_name = 'TK'

Aquí, no es necesario aplicar first_name como argumento, y todos los objetos de instancia tendrán un class attribute inicializado con XJ.

Code: [Select]
xj = Person()
print(xj.first_name) # => xj

Fresco.

Ahora hemos aprendido que podemos usar public instance variables y class attributes.

Otra cosa interesante de la public pieza es que podemos gestionar el valor de la variable.

Qué quiero decir con eso?


Nuestro object puede gestionar su valor de variable: Get y Set valores de variable.

Teniendo Personen cuenta la clase, queremos establecer otro valor para su first_name variable:

Code: [Select]
xj = Person('XJ')
xj.first_name = 'Mark'
print(xj.first_name) # => Mark

Aquí vamos.

Simplemente establecemos otro valor (Mark) a la first_name variable de instancia y se actualizó el valor.


Simple como eso.
Dado que es una public variable, podemos hacer eso.


Variable de instancia no pública




Bueno, eso es todo amigos pronto, traeré más artículos sobre Python.  aplausos cool2


Créditos:

Markxj6
Leandro Tk


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate