Форум сайта python.su
Допустим у нас есть функция, один из аргументов которой может быть как отдельным элементом, так и последовательностью элементов.
И пусть в качестве этого аргумента передана строка. Одно из правил хорошего тона рекомендует основываться не на типе значения, а на его интерфейсе. Но вот строка то отлично поддерживает интерфейс последовательности, результат правда удручает :)
Понятно что всегда можно сделать
if isinstance(arg, StringTypes):
Отредактировано (Апрель 12, 2011 20:06:58)
Офлайн
На мой взгляд isinstance — хорошее решение.
А интерфейс — это что? И чем он так сильно отличается от типа?
Офлайн
isinstance решение может и хорошее - но мне всегда мешало что элементы строки - строки
a="123"
type(a)==type(a[0])
Отредактировано (Апрель 12, 2011 20:36:52)
Офлайн
def myfunc(arg):
if type(arg) is str: return myfunc([arg])
for v in arg:
print(v)
Офлайн
Я имел ввиду чтото типа
def it(obj):
if hasattr(obj,"next"):
for sub in obj:
it(sub)
else:
yield obj
Офлайн
Андрей СветловНу набор методов класса, типа ходит как утка, крякает как утка. Так сказать не по названию, а по факту.
А интерфейс — это что? И чем он так сильно отличается от типа?
Офлайн
PooH+1
Ну набор методов класса, типа ходит как утка, крякает как утка. Так сказать не по названию, а по факту.
Офлайн