Función Python issubclass()

Python3 内置函数Funciones integradas de Python3


issubclass()Es una función integrada en Python que se utiliza para comprobar si una clase es subclase de otra.

issubclass()Se utiliza para determinar las relaciones de herencia entre clases, y puede comprobar subclases directas e indirectas.

Definición de términos: issubclass 是 is a subclass(是一个子类)的缩写。


Sintaxis básica y parámetros

Formato de sintaxis

issubclass(class, classinfo)

Descripción de parámetros

  • Parámetro class:
    • Tipo: clase
    • Descripción: la clase a comprobar.
  • Parámetro classinfo:
    • Tipo: clase o tupla de clases
    • Descripción: la clase base o la tupla de clases a comprobar.

Descripción de la función

  • Valor de retorno: Devuelve un valor booleanoTrueoFalse。
  • Características: Una clase siempre se considera subclase de sí misma.

Ejemplos

Ejemplo 1: Uso básico

Ejemplo

# Definición de clase
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

class Husky(Dog):
    pass

# Comprobar relación de herencia
print(issubclass(Dog, Animal))    # Salida: True
print(issubclass(Cat, Animal))    # Salida: True
print(issubclass(Dog, Cat))       # Salida: False

# Herencia indirecta
print(issubclass(Husky, Animal))   # Salida: True (cadena de herencia: Husky -> Dog -> Animal)
print(issubclass(Husky, Dog))      # Salida: True

Resultado esperado de ejecución:

True
True
False
True
True

Análisis del código:

  1. Una subclase es subclase de su clase padre.
  2. La herencia indirecta (clase nieta) también es subclase de la clase antecesora.

Ejemplo 2: Uso de tuplas de clases

Ejemplo

# Comprobar si pertenece a varias clases
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

class Robot:
    pass

print(issubclass(Dog, (Animal, Robot)))  # Salida: True
print(issubclass(Dog, (Cat, Robot)))      # Salida: False

# La clase misma también es subclase de sí misma
print(issubclass(int, int))    # Salida: True
print(issubclass(str, str))    # Salida: True

# Clase base abstracta
from collections.abc import MutableSequence
print(issubclass(list, MutableSequence))  # Salida: True

Resultado real de ejecución:

El resultado se genera según la ejecución real.

Análisis del código:

  • Permite comprobar si pertenece a cualquiera de varias clases.
  • Una clase siempre es subclase de sí misma.

Ejemplo 3: Aplicación práctica

Ejemplo

# Implementación de polimorfismo
class Shape:
    def area(self):
        raise NotImplementedError

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

# Comprobar tipo
shapes = [Circle(5), Rectangle(3, 4), Circle(2)]
for shape in shapes:
    if issubclass(type(shape), Shape):
        print(f"Área: {shape.area()}")

# Usar isinstance (recomendado)
for shape in shapes:
    if isinstance(shape, Shape):
        print(f"Área de la forma: {shape.area()}")

Resultado de ejecución:

Al ejecutarse en un entorno real, se mostrará el área de cada forma.

Nota: En la programación real normalmente se usaisinstance()en lugar deissubclass(type())。


Python3 内置函数Funciones integradas de Python3


Otras extensiones