<jupyter_start><jupyter_text>Herencia en PythonMediante la **herencia** en programación orientada a objetos es posible definir clases utilizando como base otras clases.La nueva clase **hereda** todas las definiciones de las clases utilizadas como base y permite modificar el comportamiento de las mismas o utilizarlo tal cual está en las clases bases. Para indicar que una clase **hereda** de otra, solo hace falta indicarlo entre paréntesis en la declaración de la clase.    class child_class(parent_class) :        u""" ... """        passUna instancia de una jerarquía de clases, intenta ejecutar el método en la deficinión de la clase a la que corresponde el objeto; cuando en esa clase no se ha definidio un método busca el método siguiendo hacia arriba la jerarquía de clases.<jupyter_code>class parent_class :
    u""" ... """
    def __init__(self) :
        print("Ejecutando el constructor de parent_class")
        return
    
    
    def __str__(self) :
        return "cadena de texto que representa al objeto"
    
    
class child_class(parent_class) :
    u""" ... """
    def __init__(self) :
        print("Ejecutando el constructor de child_class")
        return

    
# ---------

one_object = child_class()

print(one_object)<jupyter_output><empty_output><jupyter_text>--- Jerarquía de clasesEs posible definir una **jerarquía de clases** que va desde lo general hasta lo específico.En el siguiente ejemplo se tiene un paquete para representar una granja y en ella las aves como ser pollos, patos y corderos que no son aves sino mamiferos.<jupyter_code>import farm as farm

fowls = (farm.Chicken("Claudio")
         , farm.Lamb("Snow")
         , farm.Chicken("Pollito amarillo")
         , farm.Duck("Donald")
        )

for fowl in fowls :
    print(fowl, fowl.greet())<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08114035087719298, 'fraction_numerical': 0.0, 'mean_word_length': 3.484029484029484, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '359270', 'license': 'CC0-1.0', 'n_tokens_mistral': 579, 'n_tokens_neox': 577, 'n_words': 208, 'path': 'Objects/Inheritance.ipynb', 'repo_name': 'jtentor/PyB2I', 'size': '1824'}