ERENCIA EN PYTON
class BaseClass:: Define una clase base llamada BaseClass.
def base_method(self):: Define un método llamado base_method() dentro de la clase
BaseClass. Este método simplemente imprime "Cuerpo de la clase base" cuando se
llama.
class DerivedClass(BaseClass):: Define una clase derivada llamada DerivedClass
que hereda de BaseClass. Esto se indica colocando el nombre de la clase base entre
paréntesis.
def derived_method(self):: Define un método llamado derived_method() dentro de la
clase DerivedClass. Este método imprime "Cuerpo de la clase derivada" cuando se
llama.
derived_obj = DerivedClass(): Crea un objeto de la clase DerivedClass llamado
derived_obj.derived_obj.base_method(): Llama al método base_method() desde el
objeto derived_obj. Dado que DerivedClass hereda de BaseClass, puede acceder y
llamar a los métodos de la clase base.
derived_obj.derived_method(): Llama al método derived_method() desde el objeto
derived_obj. Este método pertenece específicamente a la clase DerivedClass.
El código muestra cómo funciona la herencia en Python. La clase derivada
(DerivedClass) puede acceder a los métodos y atributos de la clase base
(BaseClass) y también puede tener sus propios métodos y atributos adicionales. Esto
es un principio básico de la herencia en la programación orientada a objetos.
class
Vehicle:: Define una clase base llamada Vehicle. En este caso, esta clase no tiene
ningún comportamiento definido, pero puede contener atributos y métodos relevantes
para todos los vehículos.
class Car(Vehicle):: Define una clase hija llamada Car que hereda de la clase
Vehicle. Esto se indica colocando el nombre de la clase base (Vehicle) entre
paréntesis.
def car_info(self):: Define un método llamado car_info() dentro de la clase Car. Este
método imprime "Dentro de la clase Car".
car = Car(): Crea un objeto de la clase Car. Aquí, se instancia un objeto de tipo Car
que hereda los atributos y métodos de la clase base Vehicle.
car.car_info(): Llama al método car_info() del objeto car. Esto imprime "Dentro de la
clase Car" porque car es una instancia de la clase Car, y car_info() es un método de
esa clase.
class Person:: Define la clase Padre Person.
def person_info(self, name, age):: Define el método person_info() dentro de la clase
Person que imprime información sobre la persona.
class Company:: Define la clase Hija Company dentro del método person_info().
Esto no es correcto, las clases deben definirse fuera de los métodos.
class Employee(Person, Company):: Define la clase Hija Employee que hereda de
las clases Person y Company.
def employee_info(self, salary, skill):: Define el método employee_info() dentro de
la clase Employee que imprime información sobre el empleado.
Crear un objeto emp de la clase Employee.
Llamar a métodos en el objeto emp: person_info(), company_info() y
employee_info() para imprimir la información de la persona, la empresa y el empleado
respectivamente.
Correcciones realizadas:
Moví las definiciones de las clases Company y Employee fuera del método
person_info().
Corregí la indentación para que las clases Company y Employee estén en el mismo
nivel que la clase Person.
Cambié el nombre del método de la clase Employee de Employee_info a
employee_info para seguir la convención de nombres de método en Python.
• class Vehicle:: Define una clase base llamada Vehicle.
• def vehicle_info(self):: Define un método llamado vehicle_info() dentro de la
clase Vehicle. Este método imprime "Dentro de la clase Vehicle".
• class Car(Vehicle):: Define una clase hija llamada Car que hereda de la clase
Vehicle. Esto indica que Car es una subclase de Vehicle.
• def car_info(self):: Define un método llamado car_info() dentro de la clase
Car. Este método imprime "Dentro de la clase Car".
• class SportsCar(Car):: Define una clase hija llamada SportsCar que hereda
de la clase Car. Esto indica que SportsCar es una subclase de Car.
• def sports_car_info(self):: Define un método llamado sports_car_info()
dentro de la clase SportsCar. Este método imprime "Dentro de la clase
SportsCar".
• s_car = SportsCar(): Crea un objeto de la clase SportsCar.
• s_car.vehicle_info(): Llama al método vehicle_info() del objeto s_car. Como
SportsCar hereda de Vehicle, puede acceder a este método.
• s_car.car_info(): Llama al método car_info() del objeto s_car. Como
SportsCar hereda de Car, puede acceder a este método.
• s_car.sports_car_info(): Llama al método sports_car_info() del objeto s_car.
Este método está definido dentro de la clase SportsCar.
1.
Clase Base Vehicle:
La clase Vehicle tiene un método llamado info que imprime “This is a Vehicle”.
Esta clase es la base para las clases Car y Truck.
Clase Derivada Car:
La clase Car hereda de la clase Vehicle.
Tiene un método adicional llamado car_info que toma un nombre de automóvil
como argumento y lo imprime.
Clase Derivada Truck:
La clase Truck también hereda de la clase Vehicle.
Tiene un método adicional llamado truck_info que toma un nombre de camión
como argumento y lo imprime.
Creación de Instancias:
Creamos una instancia obj1 de la clase Car y llamamos a sus métodos info y
car_info.
Creamos otra instancia obj2 de la clase Truck y llamamos a sus métodos info y
truck_info.
En resumen, este código ilustra la herencia en la programación orientada a objetos,
donde las clases derivadas (Car y Truck) heredan propiedades y comportamientos de
la clase base (Vehicle). Cada clase derivada también puede tener sus propios
métodos adicionales.
class Vehicle:: Define la clase base llamada Vehicle.
def info(self):: Define un método info() dentro de la clase Vehicle que imprime "Esto es
un Vehículo".
class Car(Vehicle):: Define la clase derivada Car que hereda de la clase Vehicle.
def car_info(self, name):: Define un método car_info() dentro de la clase Car que toma
un parámetro name e imprime "El nombre del coche es:" seguido del nombre pasado
como argumento.
class Truck(Vehicle):: Define la clase derivada Truck que hereda de la clase Vehicle.
def truck_info(self, name):: Define un método truck_info() dentro de la clase Truck que
toma un parámetro name e imprime "El nombre del camión es:" seguido del nombre
pasado como argumento.
obj1 = Car(): Crea un objeto obj1 de la clase Car.
[Link](): Llama al método info() de la clase base Vehicle desde el objeto obj1.
obj1.car_info('BMW'): Llama al método car_info() de la clase Car para mostrar
información específica del coche, en este caso, el nombre del coche que se pasa como
argumento ('BMW').
obj2 = Truck(): Crea un objeto obj2 de la clase Truck.
[Link](): Llama al método info() de la clase base Vehicle desde el objeto obj2.
obj2.truck_info('Ford'): Llama al método truck_info() de la clase Truck para mostrar
información específica del camión, en este caso, el nombre del camión que se pasa
como argumento ('Ford').
class Vehicle:: Define la clase base Vehicle.
def vehicle_info(self):: Define un método vehicle_info() dentro de la clase Vehicle que
imprime "Dentro de la clase Vehicle".
class Car(Vehicle):: Define la clase Car, que hereda de Vehicle.
def car_info(self):: Define un método car_info() dentro de la clase Car que imprime
"Dentro de la clase Car".
class Truck(Vehicle):: Define la clase Truck, que hereda de Vehicle.
def truck_info(self):: Define un método truck_info() dentro de la clase Truck que imprime
"Dentro de la clase Truck".
class SportsCar(Car, Vehicle):: Define la clase SportsCar, que hereda de Car y Vehicle.
def sports_car_info(self):: Define un método sports_car_info() dentro de la clase
SportsCar que imprime "Dentro de la clase SportsCar".
Crear un objeto s_car de la clase SportsCar.
Llamar al método vehicle_info() desde el objeto s_car, lo que imprimirá "Dentro de la
clase Vehicle".
Llamar al método car_info() desde el objeto s_car, lo que imprimirá "Dentro de la clase
Car".
Llamar al método sports_car_info() desde el objeto s_car, lo que imprimirá "Dentro de la
clase SportsCar".
La función issubclass(class, classinfo) se utiliza para determinar si una clase es una
subclase de otra clase. Recibe dos argumentos: la clase que se va a comprobar y la
clase que se sospecha que es su superclase. Si la primera clase es de hecho una
subclase de la segunda, issubclass() devuelve True; de lo contrario, devuelve False. Por
ejemplo
print(issubclass(Employee, Company)) # Esto imprimirá True, ya que Employee es una
subclase de Company
• class Company:: Define la clase Company.
• def fun1(self):: Define un método de ejemplo fun1() dentro de la clase Company.
• class Employee(Company):: Define la clase Employee que hereda de la clase
Company. Employee es una subclase de Company.
• def fun2(self):: Define un método de ejemplo fun2() dentro de la clase Employee.
• class Player:: Define la clase Player.
• def fun3(self):: Define un método de ejemplo fun3() dentro de la clase Player.
• print(issubclass(Employee, Company)): Imprime si Employee es una subclase de
Company. Devuelve True.
• print(issubclass(Employee, list)): Imprime si Employee es una subclase de list.
Devuelve False.
• print(issubclass(Player, Company)): Imprime si Player es una subclase de Company.
Devuelve False.
• print(issubclass(Employee, (list, Company))): Imprime si Employee es una subclase de
list o Company. Devuelve True.
• print(issubclass(Company, (list, Company))): Imprime si Company es una subclase de
list o Company. Devuelve True.
Anulación de métodos
En herencia, todos los miembros disponibles en la clase principal están disponibles de
forma predeterminada en la clase secundaria. Si la clase secundaria no satisface la
implementación de la clase principal, entonces se le permite a la clase secundaria
redefinir ese método extendiendo funciones adicionales en la clase secundaria. Este
concepto se llama anulación de método.
Cuando un método de clase secundaria tiene el mismo nombre, los mismos
parámetros y el mismo tipo de retorno que un método de su superclase, se dice que el
método de la clase secundaria anula el método de la clase primaria.