🐍

Python: Fundamentos de POO

59 cards · 🇺🇸 English → 🇪🇸 Español

Clases, herencia y conceptos fundamentales de la programación orientada a objetos en Python.

Study all 59 cards for free

Flashcards, quizzes, pixel-art games and a daily review that remembers for you.

Study this deck free

Try the first 10 cards

1 / 10
Question

Class in Python

Knew itLearning

Tap the card for the answer · swipe right if you knew it, left if not

Already have an account? Sign in

Cards

  1. 1Class in Python
    Un molde para crear objetos que agrupa datos (atributos) y funcionalidad (métodos). Se define con la palabra clave 'class'.
  2. 2Define a class
    class ClassName: def __init__(self, param): self.attribute = param
  3. 3Instance
    Un objeto creado a partir de una clase. Cada instancia tiene sus propios datos, pero comparte los métodos con otras instancias de la misma clase.
  4. 4Self
    Referencia a la instancia actual. Primer parámetro de los métodos de instancia. Permite acceder a atributos y métodos. Es una convención, no una palabra clave.
  5. 5__init__
    Método constructor que se llama al crear una nueva instancia. Inicializa los atributos de instancia. Ejemplo: def __init__(self, name): self.name = name
  6. 6Instance attributes
    Variables propias de cada instancia. Se definen en __init__ u otros métodos. Se accede a ellas mediante self.attribute_name.
  7. 7Class attributes
    Variables compartidas por todas las instancias de una clase. Se definen directamente en el cuerpo de la clase, no en métodos. Ejemplo: class Dog: species = 'Canis familiaris'
  8. 8instance vs class attributes
    Los atributos de instancia son propios de cada instancia (self.attr). Los atributos de clase se comparten entre todas las instancias (ClassName.attr). La búsqueda en la instancia comprueba primero la instancia y luego la clase.
  9. 9Instance methods
    Funciones definidas en una clase que operan sobre los datos de la instancia. Reciben self como primer parámetro. Ejemplo: def bark(self): return f'{self.name} says woof!'
  10. 10Class methods
    Métodos que operan sobre la propia clase, no sobre instancias. Se decoran con @classmethod. Reciben cls como primer parámetro. Ejemplo: @classmethod def from_string(cls, string):
  11. 11Static methods
    Métodos que no acceden ni a la instancia ni a la clase. Se decoran con @staticmethod. No reciben parámetro self/cls. Funciones utilitarias agrupadas dentro de la clase.
  12. 12Inheritance
    Mecanismo que permite que una clase herede atributos y métodos de otra clase. La clase hija extiende a la padre. Sintaxis: class Child(Parent):
  13. 13Method overriding
    La clase hija redefine un método de la clase padre. Al llamarlo sobre una instancia de la hija, se ejecuta la versión de la hija. Se puede llamar a la versión del padre con super().
  14. 14Super()
    Función integrada para llamar a métodos de la clase padre. Habitual en __init__: super().__init__(args). Gestiona correctamente la herencia múltiple.
  15. 15Multiple inheritance
    Una clase hereda de varias clases padre. Sintaxis: class Child(Parent1, Parent2). La resolución de métodos sigue el MRO (Method Resolution Order).
  16. 16MRO (Method Resolution Order)
    Orden en el que Python busca métodos en la jerarquía de herencia. Se consulta con ClassName.mro() o ClassName.__mro__. Usa la linealización C3.
  17. 17Polymorphism
    Distintas clases pueden usarse a través de la misma interfaz. Objetos de clases diferentes responden de forma distinta a la misma llamada a método. En Python se manifiesta como duck typing.
  18. 18Encapsulation
    Agrupar datos y métodos en una clase. Controlar el acceso al estado interno. Se usan propiedades y atributos privados.
  19. 19Private attributes in Python
    Por convención, se anteponen guiones bajos: _private o __private. __name activa el name mangling (_ClassName__name). No son realmente privados, es solo una convención.
  20. 20Name mangling
    __attribute se convierte en _ClassName__attribute. Ayuda a evitar conflictos de nombres en la herencia. No es una medida de seguridad, solo una convención.
  21. 21@property
    Decorador que hace que un método sea accesible como un atributo. Permite lógica de getter/setter manteniendo la sintaxis de atributo. Ejemplo: @property def name(self): return self._name
  22. 22Create a setter with @property
    @property para el getter, y luego @attribute.setter para el setter. Ejemplo: @property def name(self): return self._name @name.setter def name(self, value): self._name = value
  23. 23__str__
    Método mágico que define la representación en cadena legible para humanos. Lo invocan str() y print(). Ejemplo: def __str__(self): return f'{self.name}'
  24. 24__repr__
    Método mágico que define la representación en cadena para desarrolladores. Debe ser inequívoca, idealmente código Python válido. Lo invoca repr(). Sirve de respaldo para __str__.
  25. 25__str__ vs __repr__
    __str__: legible para el usuario final. __repr__: inequívoco, para desarrolladores y depuración. __repr__ sirve de respaldo si falta __str__.
  26. 26__len__
    Define el comportamiento de len(). Ejemplo: def __len__(self): return len(self.items)
  27. 27__getitem__
    Permite la indexación/slicing: obj[key]. Ejemplo: def __getitem__(self, index): return self.items[index]
  28. 28__setitem__
    Permite la asignación por índice: obj[key] = value. Ejemplo: def __setitem__(self, key, value): self.items[key] = value
  29. 29__eq__
    Define la comparación de igualdad con ==. Ejemplo: def __eq__(self, other): return self.id == other.id
  30. 30Comparison magic methods
    __eq__ (==), __ne__ (!=), __lt__ (<), __le__ (<=), __gt__ (>), __ge__ (>=). Definen cómo se comparan los objetos.

And 29 more cards. Study the whole deck free

Articles about this deck

More Programming decks

See all
Study all 59 cards free