python 2 Flashcards
(20 cards)
clase q es
es un modelo que define atributos y métodos
objeto q es
es una instancia de una clase.Es una encarnación de los requisitos, rasgos y cualidades asignados a una clase específica
q contiene un objeto
Un nombre que los identifica y nos permite distinguirlos.
Un conjunto de propiedades (el conjunto puede estar vacío).
Un conjunto de métodos (también puede estar vacío).
EJEMPLO:
Nombre del objeto = ROSETA
Clase = HADA
Propiedad = Color (rosa)
Actividad =FLORA
Herencia
Cualquier objeto vinculado a un nivel específico de una jerarquía de clases hereda todos los rasgos (así como los requisitos y cualidades) definidos dentro de cualquiera de las superclases.
pass para q es
no contiene actividades ni propiedades, creamos un objeto de la clase(TheSimplestClass), el cual aún no tiene actividades ni propiedades
class TheSimplestClass:
pass
my_first_object = TheSimplestClass() # Creación de un objeto
Jerarquía de Clases
Se pueden definir clases generales y luego especializarlas en subclases.
Ejemplo: una clase Vehículo puede tener subclases como Terrestre, Acuático, Aéreo, etc.
Cada subclase es más especializada (o más específica) que su superclase. Por el contrario, cada superclase es más general (más abstracta) que cualquiera de sus subclases.
Atributos y Métodos
que son
Atributos: características de un objeto (peso, dieta, sabor en un objeto “comida”).
Métodos: acciones que puede realizar un objeto.
Encapsulamiento
Se pueden ocultar datos dentro de una clase para evitar modificaciones no autorizadas.
Pilas (Estructura de Datos)
Se maneja con la regla LIFO (Last In, First Out – el último en entrar es el primero en salir).
Métodos clave:
push(val) → Añadir un elemento.
pop() → Extraer un elemento.
constructor q es
su propósito general es construir un nuevo objeto.
ej:
class Stack: # Definiendo la clase de la pila.
def __init__(self): # Definiendo la función del constructor.
print(“¡Hola!”)
stack_object = Stack() # Instanciando el objeto.
variables de instancia.
Cada objeto lleva su propio conjunto de propiedades
__dict__
para crear que
como se usa
Crear un objeto de la clase Persona
(es un diccionario).
Vamos a usarla para presentar de forma segura el contenido de un objeto.
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
p = Persona(“Ana”, 25)
Ver el diccionario de atributos del objeto
print(p.__dict__)
{‘nombre’: ‘Ana’, ‘edad’: 25}
antepuesto dos guiones bajos (__).
instancia sea privada, se vuelve inaccesible desde el mundo exterior.
class ExampleClass:
def __init__(self, val = 1):
self.__first = val
def set_second(self, val = 2): self.\_\_second = val
Variables de clase
Una variable de clase es una propiedad que existe en una sola copia y se almacena fuera de cualquier objeto.
contador
class ExampleClass:
counter = 0 # Esta es una variable de clase (compartida por todas las cajas)
def \_\_init\_\_(self, val = 1): self.\_\_first = val # Se crea una variable dentro de cada caja ExampleClass.counter += 1 # Se incrementa la variable de clase cada vez que se crea una nueva caja
example_object_1 = ExampleClass() #valor de 1 por defecto
example_object_2 = ExampleClass(2) #le agregamos el valor de 2 en esta ocasion
example_object_3 = ExampleClass(4)#le agregamos el valor de 4 en esta ocasion
print(example_object_1.__dict__, example_object_1.counter)
print(example_object_2.__dict__, example_object_2.counter)
print(example_object_3.__dict__, example_object_3.counter)
{‘_ExampleClass__first’: 1} 3
{‘_ExampleClass__first’: 2} 3
{‘_ExampleClass__first’: 4} 3
counter sigue en 3, porque es compartido entre todas las cajas.
variables dento de clases y fuera
aun no hemos creado ninguna caja objeto asi que no hay instancias.
class ExampleClass:
varia = 1 # Esto es una variable de clase (compartida por todas las cajas)
def \_\_init\_\_(self, val): ExampleClass.varia = val # Se cambia el valor de la variable de clase print(ExampleClass.\_\_dict\_\_) #ver que hay en la clase antes de crear las cajas
example_object = ExampleClass(2) #creamos caja objeto, ahora es varia=2 en todas las cajas porque es una variable conjunta.
print(ExampleClass.__dict__) #ver que hay en la clase y en la caja.
print(example_object.__dict__)
Comprobando la existencia de un atributo
class ExampleClass:
def __init__(self, val):
if val % 2 != 0:#si el numero es impar
self.a = 1#se crea la variable a
else:#si el numero es par
self.b = 1#se crea varibale b
example_object = ExampleClass(1)
print(example_object.a)
print(example_object.b)
SOLO PUEDE TENER ATRIBUTO A O B COMO TIENE A LA SALIDA DICE:
Traceback (most recent call last):
File “.main.py”, line 11, in
print(example_object.b)
AttributeError: ‘ExampleClass’ object has no attribute ‘b’
La función retorna True o False.
Así es como puedes utilizarla:
class ExampleClass:
def __init__(self, val):
if val % 2 != 0: self.a = 1 else: self.b = 1
hasattr
class ExampleClass:
a = 1 #variable de clase,accedida por los objetos
def __init__(self):
self.b = 2 #variable de instancia, creada en los objetos
example_object = ExampleClass() {‘b’: 2} # Solo ‘b’ porque ‘a’ es de la clase
print(hasattr(example_object, ‘b’)) #True, b existe en el objeto porque se creó en __init__()
print(hasattr(example_object, ‘a’))#True, a no está dentro del objeto, pero como es una variable de clase, Python la encuentra al buscar en ExampleClass.
print(hasattr(ExampleClass, ‘b’))#false,b es una variable de instancia (se crea en objetos, no en la clase).
print(hasattr(ExampleClass, ‘a’))#True
Métodos a detalle
class Classy:
def method(self, par): #par es un parametro que se pasa al metodo
print("método:", par)
obj = Classy() #Se crea un objeto llamado obj de la clase Classy.
# se ejecuta el método con el valor correspondiente
obj.method(1)
obj.method(2)
obj.method(3)
El código da como salida:
método: 1
método: 2
método: 3
var-varia
class Classy:
varia = 2
def method(self):
print(self.varia, self.var)#Python buscará primero en el objeto (self), y si no lo encuentra, usará la variable de clase Classy.varia.
obj = Classy()
obj.var = 3 #se crea una variable de instancia var en el objeto obj con valor 3.Ahora el objeto obj tiene:{‘var’: 3}
obj.method()
#print(self.varia, self.var) imprime dos valores:
self.varia: Python lo busca en obj primero, pero como no existe, lo toma de la clase (Classy.varia = 2).
self.var: Se encuentra en obj, con el valor 3.
🔹 Salida esperada: 2 3
class Classy:
def __init__(self, value):
self.var = value #Se crea un atributo de instancia var, que recibe un valor cuando se crea el objeto.
obj_1 = Classy(“objeto”)
print(obj_1.var)# obtenemos el valor “objeto” porque es el que se pasó al constructor.
salida esperada:objeto