类字符串表示除了str,unicode等内建字符串类外还包括用户自己编写的str,unicode的子类,用户自定的行为表现类似于字符串的类型
使用内建函数isinstance判断:
1 >>> user = 'uzero'2 >>> isinstance(user, basestring)3 True
basestring是str和unicode共同的基类,所以这个测试对str,unicode都是有效的.当对用户自定义的字符串类型进行测试时,只要自定义的字符串类型是str,unicode或者basestring的子类,测试同样是有效的,但是对用户自定的行为表现类似于字符串的类型,测试会无效,例如python标准库中的UserString对象是非常明显的字符串类型但它不是str,unicode或者basestring的子类。这种情况可以检查对象的行为是否像一个字符串,比如字符串的拼接特性:
1 def isStringLike(anobj):2 try:3 anobj + ''4 except:5 return False6 else:7 return True
更进一步,利用字符可以转换大小的特性:
1 def isStringLike(anobj):2 try:3 anobj.lower() + ''4 except:5 return False6 else:7 return True
这样就可保证万无一失了