В python есть способ узнать, реализует ли объект интерфейс, прежде чем передать его функции?

Я знаю, что это может звучать глупо, особенно для тех, кто знает Python.с природой, но мне было просто интересно,есть ли способ узнать, является ли объектреализует интерфейс так сказать?

Чтобы привести пример того, что я хочу сказать:

позволять'скажем, у меня есть эта функция:

def get_counts(sequence):
     counts = {}
     for x in sequence:
         if x in counts:
             counts[x] += 1
         else:
             counts[x] = 1
     return counts

Мой вопрос: есть ли способ убедиться, что объект, переданный в функцию?iterable Я знаю, что в Java или C # я мог бы сделать это, если бы метод принимал любой объект, который реализует определенный интерфейс, пустьскажем (например)iIterable как это:void get_counts(iIterable sequence)

Я предполагаю, что в Python мне пришлось бы использовать упреждающие проверки самоанализа (вdecorator возможно?) и кинуть кастомexception если объект нене иметь__iter__ атрибуты). Но есть ли ещевещий способ сделать это?

Ответы на вопрос(4)

Ваш ответ на вопрос