Python tiene 2 funciones integradas que están relacionadas con la herencia. Ellos son:
1. isinstance (): comprueba el tipo del objeto. Su sintaxis es:
isinstance (object_name, class_name)
Devolvería Verdadero, si la clase object_name es class_name, de lo contrario False.
Por ejemplo :
# Código Python para issubclass() demo
imprimir ( esinstancia ( 5 , int ))
Salir:
Verdadero
El código anterior mostrará el siguiente resultado:
Verdadero
Esto se debe a que 5 es un número entero y, por lo tanto, pertenece a la clase int.
NOTA. Int es un tipo y una clase en Python.
2. issubclass (): comprueba si una clase en particular es hija de otra clase o no. Su sintaxis es:
issubclass (childclass_name, parentclass_name)
Devolvería True si la clase secundaria inyectada se deriva de la clase principal inyectada; de lo contrario, devolvería False .
Por ejemplo:
# Código Python para issubclass() demo
clase A ():
def __ init __ ( self , a):
self
. a
=
a
class
B (A):
def __init __ ( self
, a, b):
self . b
=
b
A .__ init __ ( self , a)
print ( issubclass (B, A))
Salir:
Verdadero
El código anterior mostrará el siguiente resultado:
Verdadero
Herencia múltiple:
Cuando una clase hereda de varias clases principales, se denomina herencia múltiple. Funciona igual que la herencia simple.
# código de Python para demostrar la herencia múltiple
# primera clase principal
clase Persona ( objeto ): def __ init __ ( self , nombre, idnumber):
self . nombre = name
self . idnumber = idnumber
# segunda clase principal
class Employee ( object ):
def __ init __ ( self , salario, cargo): self . salario = salario
auto . publicar = publicar
# heredar de ambas clases principales
class Líder (Persona, Empleado):
def __ init __ ( self , nombre, idnumber, salario, puesto, puntos): self .puntos = puntos
Persona .__ init __ ( self , nombre, número de identificación) < / p> Empleado .__ init __ ( self , salario, puesto)
Salida: W Al instanciar una clase, asegúrese de que la secuencia en la que pasa los parámetros a la función coincida con la línea de secuencia dentro de la clase. Por ejemplo, en el código anterior, si necesitamos generar una instancia, escribiríamos ins = Leader (`Rahul`, 882016, 75000,` Assistant Manager`, 560) Si intercambia la secuencia 75000 y "Subgerente", el código recibirá "Subgerente" como salario y 75000 como puesto. Mírese.
< borde de la tabla = "0" relleno de celdas = "0" espaciado de celdas = "0" > |
# primera clase principal
clase Persona ( objeto ): def __ init __ ( self , name, idnumber):
self . nombre = name
self . idnumber = idnumber
# segundo padre
class Employee ( objeto < /código> ): def __ init __ ( self , salario, puesto): self . salario = salario
auto . publicar = publicar
# heredar de ambas clases principales
class Líder (Persona, Empleado):
def __ init __ ( self , nombre, número de identificación, salario, cargo, puntos): self . puntos = puntos
Persona .__ init__ ( self , nombre, idnumber)
Empleado .__ init __ ( self , salario, puesto)
print ( self < código clase = "simple">. salario)
ins = Líder ( `Rahul` , 882016 , `Subgerente` , 75000 , 560 ) Salir: Asistente de Gerente Anular métodos: Anular un método significa anular un método en una subclase cuando ya está definido en alguna otra clase. Un método en una subclase se llamará como anulado solo si existe otro método con el mismo nombre y el mismo conjunto de parámetros en la superclase. Además, no podemos anular un método de superclase privado que tiene un guión bajo doble delante de su nombre. Por ejemplo: # Clase base clase A ( objeto ): def __ init __ ( código propio> ): constante1 = 1
def método1 ( < código clase ="color1 "> self ): imprimir ( ` método1 de la clase A` ) clase B (A): def __ init __ ( self ): constante2 = 2
self . llamada1 ()
A. __init __ ( self )
def método1 ( self ):
imprimir ( `método1 de la clase B` )
def llamada1 ( self ): self . método1 ()
A.method1 ( self )
b = B () |
Salir:
método1 de clase B método1 de la clase A
El código llama al método1 de la clase B, no al A porque Python busca la función de abajo hacia arriba.
Si desea llamar al método1 de la clase A, reemplace self.método1 () con A.method1 (self).
El procedimiento anterior para anular métodos funciona en clases de estilo antiguo, que son clases en las que la clase principal no hereda de & # 39; objeto & # 39; class.
Para las clases de nuevo estilo donde la clase padre hereda de la clase de objeto incorporada, existe otro procedimiento para anular los métodos.
El método super () nos ayuda a anular los métodos en las clases de nuevo estilo. Su sintaxis es la siguiente:
super (class_name, instance_) from_class) .overridden_method_name ()
Supongamos que hay 3 clases A, B y C. Las 3 tienen una función genérica llamado & # 39; método1 & # 39 ;. Super () está funcionando aquí.
class
A (
objeto ):
def function1 (
self
):
imprimir `función de clase A`
class B (A):
def
function1 (
self
):
print
`función de la clase B`
súper (B, self ). function1 ()
class
C (B):
def función1 ( self ) :
print
`función de clase C`
super
(C,
self
).function1 ()
j
= C ()
j.function1 ()
Salir:
función de clase C función de clase B función de clase A
Param El "auto" éter en una superfunción actúa como un objeto de la clase padre y por lo tanto llama a la función 1 de la clase padre.