在处理一些自定义序列化时,我一直在使用types
模块。让我感到沮丧的一件事是,文档根本没有说明如何实际调用类型。一个例子:types.CodeType - The type for code objects such as returned by compile().
是的,那么 12 参数呢?
>>> types.CodeType()
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
TypeError: code() takes at least 12 arguments (0 given)
现在,我通常可以从Python文档中的其他各个位置或网上获取信息。例如,我猜new.code(argcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab)
与types.CodeType
所期望的参数列表相同(尽管,参数列表几乎不算是一个好的文档)。
但严重的是,有没有人知道实际描述types
中可能的来电的文档?
编辑:我刚刚注意到一个可能有点帮助的替代方案...... help(types.CodeType)
等。
答案 0 :(得分:2)
实际实例化types
模块中的类型通常不是很有用。它们的目的是在isinstance()
调用中使用,其中一些根本无法实例化(例如types.GeneratorType
)。
如果仅仅是好奇心,请查看交互式口译员提供的文档,例如
help(types.CodeType)
如果您真的认为需要来实现这些类型,我会很想听到一个示例用例:)
编辑:以下是适用于Python 2.5到2.7的types
模块中类型的完整分类列表。如果将多个类型放在同一行上,则它们只是同一类型的别名。
根本无法实例化10种类型:
BuiltinFunctionType, BuiltinMethodType
DictProxyType
EllipsisType
FrameType
GeneratorType
GetSetDescriptorType
MemberDescriptorType
NoneType
NotImplementedType
TracebackType
16种类型是内置名称的别名:
BooleanType bool
BufferType buffer
ComplexType complex
DictType, DictionaryType dict
FileType file
FloatType float
IntType int
ListType list
LongType long
ObjectType object
SliceType slice
TupleType tuple
TypeType type
StringType str
UnicodeType unicode
XRangeType xrange
要实例化这些内容,最好使用内置名称。
其余6种类型都有有用的文档字符串:
ClassType
CodeType
FunctionType, LambdaType
InstanceType
MethodType, UnboundMethodType
ModuleType
ClassType
和InstanceType
可以被认为是过时的,因为它们指的是旧式的类。