A única forma que consigo pensar em fazer isso sem usar as funções "comuns", é a seguinte:
lista = ['gato', 'cobra', 'gato', 'coruja', 'gato', 'gato', 'cobra']
quantidade_ocorrencias = 0
item_com_maior_ocorrencia = ''
dicionario_items = {}
# adiciona a quantidade de ocorrencias de cada item na lista
for item in lista:
# se item não tiver no dicionario, adiciona
if item not in dicionario_items:
dicionario_items[item] = 0
# se item já tiver no dicionario, incrementa
dicionario_items[item] += 1
# pega o elemento com maior ocorrência
for item in dicionario_items:
# se ocorrência for maior que a anterior, atualiza
if dicionario_items[item] > quantidade_ocorrencias:
quantidade_ocorrencias = dicionario_items[item]
item_com_maior_ocorrencia = item
print(f'O item com maior ocorrência é {item_com_maior_ocorrencia} '
f'com {quantidade_ocorrencias} ocorrências.')