В 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 ""
мне кажется слишком жестко запрограммированным. Но если это лучший способ сделать это, пусть будет так. : ) Спасибо за любую помощь, которую вы можете предложить.