Aprende a implementar programación orientada a objetos en Python con claridad y buenas prácticas: desde el uso del keyword class y la convención CamelCase, hasta el método especial Dunder init y la dot notation para acceder a propiedades y métodos. Con un ejemplo práctico de una clase Persona, verás cómo inicializar, formatear salidas y ejecutar un script de forma segura.
¿Cómo se declara una clase en Python y qué convención usa?
Para crear una clase en Python se utiliza el keyword class seguido del nombre en CamelCase, y se abre el bloque con dos puntos. Este estilo refuerza que Python es “un lenguaje de convenciones”. Dentro, se definen métodos y propiedades.
- Usa class para declarar la clase.
- Nombra la clase con CamelCase.
- Abre el bloque con : como en funciones.
Un método clave es init (llamado Dunder init). Su objetivo es inicializar la clase con los parámetros de construcción. Además, se usa self como referencia a la propia instancia para acceder a propiedades y métodos internos.
- self referencia la instancia actual.
- init inicializa propiedades con los argumentos recibidos.
- Puedes marcar atributos como privados con guion bajo. En Python se puede acceder, pero es mala práctica hacerlo.
Ejemplo base de una clase con convención y un método sin implementación usando pass:
class Airplane:
def __init__(self, passangers, seats, pilots):
self.passangers = passangers
self.seats = seats
self._pilot = pilots # atributo "privado" por convención
def take_off(self):
pass
Puntos esenciales:
- Variables privadas por convención: prefijo guion bajo. Es mala práctica acceder fuera de la clase.
- Métodos: se definen como funciones dentro de la clase y siempre reciben self primero.
- take off: ejemplo de método; aquí sin implementación con pass.
¿Cómo se instancia y cómo funciona la dot notation?
Instanciar es “construir” un objeto a partir de la clase. En Python no se usa el keyword new. Existe Dunder new, pero no es necesario para este flujo de trabajo. Se crea una instancia llamando el nombre de la clase con sus argumentos y asignándola a una variable.
- No se utiliza new al instanciar en Python.
- Se pasa la inicialización como parámetros del constructor.
- Se accede a propiedades y métodos con dot notation.
Ejemplo genérico de instanciación y acceso:
airplane = Airplane(passangers, seats, pilots)
# Acceso/edición de propiedades
# airplane.passangers = 150
# Llamada a métodos
# airplane.take_off()
Claves prácticas:
- dot notation: uso del punto para leer o asignar propiedades.
- Llamar métodos requiere paréntesis. Sin paréntesis, solo es una referencia en memoria.
¿Cómo crear la clase persona y ejecutar say_hello?
Se propone crear un archivo personas.py y definir una clase simple con nombre y edad. El método Dunder init asigna las propiedades internas. Luego, un método say_hello imprime un mensaje usando los datos de la instancia con self.
class Persona:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print(f"Hello. My name is {self.name}. And I am {self.age} years old.")
if __name__ == "__main__":
person = Persona("David", 34)
print(f"age: {person.age}")
person.say_hello()
Qué ocurre en la ejecución:
- Se inicializa la clase con nombre y edad.
- Se accede a la propiedad age con dot notation.
- Se llama al método say_hello con paréntesis.
Habilidades y conceptos que practicarás:
- Programación orientada a objetos: modelar entidades con clases y métodos.
- class y init: síntesis de creación e inicialización de objetos.
- self: referencia interna para acceder a propiedades y métodos.
- Encapsulamiento por convención: atributos con guion bajo como “privados”.
- dot notation: lectura y asignación de propiedades; llamada de métodos.
- pass: marcador de no implementación temporal.
- Formateo de cadenas: integrar placeholders con valores reales.
- Ejecución controlada: punto de entrada con if name equals main.
¿Te quedó alguna duda o quieres compartir tu propia variante del ejemplo? Comenta cómo nombrarías tus métodos o qué atributos “privados” usarías y por qué.