为什么`dir`在Python 2中列出了一些带有unicode名称的attrs?

koj*_*iro 7 python python-2.7 boto3

我试图在boto3中学习关于低级s3 api的事情,所以我做到了

from pprint import pprint
import boto3
client = boto3.client('s3')
pprint(dir(client))
Run Code Online (Sandbox Code Playgroud)

在REPL中注意到一些令人惊讶的事情(至少对我而言).既然那里有很多人,我会把它归结为这个问题:

>>> from itertools import groupby
>>> groups = groupby(sorted(dir(client), key=type), key=type)
>>> pprint([g[0] for g in groups])
[<type 'str'>, <type 'unicode'>]
Run Code Online (Sandbox Code Playgroud)

一些属性有名称unicode,有些属于str.

我的猜测是在boto3源代码中,有些模块有from __future__ import unicode_literals.另一方面,boto3所做的不仅仅是动态代码生成的公平份额.

有谁知道一些attrs是unicode的真正原因,有些是str,以及它的含义(如果有的话)是什么?