Лучший способ выполнить в Python тест «not None» для нормальной и пустой строки Unicode?

В Python 2.7 я пишу класс, который вызывает функцию в API, которая может или не может вернуть пустую строку. Кроме того, пустая строка может иметь формат unicode u "" или не-unicode "" . Мне было интересно, как лучше всего это проверить?

Следующий код отлично работает с пустой строкой, но не с пустой строкой Unicode:

class FooClass():
    string = ...
    string = might_return_normal_empty_string_or_unicode_empty_string(string)

    # Works for normal empty strings, not unicode:
    if string is not None:
        print "string is not an empty string."

Вместо этого мне пришлось бы написать его вот так, чтобы заставить его работать для юникода:

class BarClass():
    string = ...
    string = might_return_normal_empty_string_or_unicode_empty_string(string)

    # Works for unicode empty strings, not normal:
    if string is not u"":
        print "string is not an empty string."

... и вот так, чтобы заставить его работать как для пустых строк в не-юникоде, так и в юникоде:

class FooBarClass():
    string = ...
    string = might_return_normal_empty_string_or_unicode_empty_string(string)

    # Works for both normal and unicode empty strings:
    if string is not u"" or None:
        print "string is not an empty string."

Третий метод - лучший способ сделать это или есть лучший способ? Я спрашиваю, потому что писать u "" мне кажется слишком жестко запрограммированным. Но если это лучший способ сделать это, пусть будет так. : ) Спасибо за любую помощь, которую вы можете предложить.

21
задан Dave Gallagher 16 April 2011 в 23:56
поделиться