なぜPythonの次のコードが機能するのか教えてもらえますか？

クラス動物：
    def __init __（self、name、type）：
        self.name = name
        self.tipo = type

    def Greeting_animal（）：
        print（f'hola {self.name} '）

mi_animal = animal（ 'zeus'、 'dog'）
mi_animal.saludar_animal（）
Puedes decirme por qué el siguiente código en python o funciona?

class Animal:
    def __init__(self, nombre, tipo):
        self.nombre = nombre
        self.tipo = tipo

    def saludar_animal():
        print(f'Hola {self.nombre}')

mi_animal = Animal('zeus', 'perro')
mi_animal.saludar_animal()