python 3.1 - DictType не является частью модуля типов?

Это то, что я нашел при установке Python 3.1 в Windows.

Где я могу найти другие типы, особенно DictType и StringTypes?

>>> print('\n'.join(dir(types)))
BuiltinFunctionType
BuiltinMethodType
CodeType
FrameType
FunctionType
GeneratorType
GetSetDescriptorType
LambdaType
MemberDescriptorType
MethodType
ModuleType
TracebackType
__builtins__
__doc__
__file__
__name__
__package__
>>> 

person hyper_w    schedule 22.09.2010    source источник


Ответы (2)


Согласно документу модуля types (http://docs.python.org/py3k/library/types.html),

Этот модуль определяет имена для некоторых типов объектов, которые используются стандартным интерпретатором Python, но не отображаются, как встроенные функции, такие как int или str. ...

Типичное использование для проверки isinstance() или issubclass().

Поскольку тип словаря можно использовать с dict, нет необходимости вводить такой тип в этом модуле.

>>> isinstance({}, dict)
True
>>> isinstance('', str)
True
>>> isinstance({}, str)
False
>>> isinstance('', dict)
False

(Примеры int и str тоже устарели.)

person kennytm    schedule 22.09.2010

Grepping /usr/lib/python3.1 для «DictType» показывает, что его единственное вхождение находится в /usr/lib/python3.1/lib2to3/fixes/fix_types.py. Там _TYPE_MAPPING сопоставляет DictType с dict.

_TYPE_MAPPING = {
        'BooleanType' : 'bool',
        'BufferType' : 'memoryview',
        'ClassType' : 'type',
        'ComplexType' : 'complex',
        'DictType': 'dict',
        'DictionaryType' : 'dict',
        'EllipsisType' : 'type(Ellipsis)',
        #'FileType' : 'io.IOBase',
        'FloatType': 'float',
        'IntType': 'int',
        'ListType': 'list',
        'LongType': 'int',
        'ObjectType' : 'object',
        'NoneType': 'type(None)',
        'NotImplementedType' : 'type(NotImplemented)',
        'SliceType' : 'slice',
        'StringType': 'bytes', # XXX ?
        'StringTypes' : 'str', # XXX ?
        'TupleType': 'tuple',
        'TypeType' : 'type',
        'UnicodeType': 'str',
        'XRangeType' : 'range',
    }

Поэтому я думаю, что в Python3 DictType заменено на dict.

person unutbu    schedule 22.09.2010
comment
@ubuntu На самом деле я занимаюсь преобразованием скриптов 2.x. isinstance(x,dict) пока работает. Спасибо. - person hyper_w; 22.09.2010