Here's the new type at work:
>>> print defaultdict # show our type
- <type 'test.test_descrtut.defaultdict'>
+ <class 'test.test_descrtut.defaultdict'>
>>> print type(defaultdict) # its metatype
<type 'type'>
>>> a = defaultdict(default=0.0) # create an instance
>>> print a # show the instance
{}
>>> print type(a) # show its type
- <type 'test.test_descrtut.defaultdict'>
+ <class 'test.test_descrtut.defaultdict'>
>>> print a.__class__ # show its class
- <type 'test.test_descrtut.defaultdict'>
+ <class 'test.test_descrtut.defaultdict'>
>>> print type(a) is a.__class__ # its type is its class
1
>>> a[1] = 3.25 # modify the instance
''')
from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import foo
eq(repr(foo.foo),
- "<type 'areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation.foo.foo'>")
+ "<class 'areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation.foo.foo'>")
def test_object(self):
# XXX Test the repr of a type with a really long tp_name but with no
type_repr(PyTypeObject *type)
{
PyObject *mod, *name, *rtn;
+ char *kind;
mod = type_module(type, NULL);
if (mod == NULL)
if (name == NULL)
return NULL;
+ if (type->tp_flags & Py_TPFLAGS_HEAPTYPE)
+ kind = "class";
+ else
+ kind = "type";
+
if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__")) {
- rtn = PyString_FromFormat("<type '%s.%s'>",
+ rtn = PyString_FromFormat("<%s '%s.%s'>",
+ kind,
PyString_AS_STRING(mod),
PyString_AS_STRING(name));
}
else
- rtn = PyString_FromFormat("<type '%s'>", type->tp_name);
+ rtn = PyString_FromFormat("<%s '%s'>", kind, type->tp_name);
Py_XDECREF(mod);
Py_DECREF(name);
if (su->obj)
return PyString_FromFormat(
- "<super: <type '%s'>, <%s object>>",
+ "<super: <class '%s'>, <%s object>>",
su->type ? su->type->tp_name : "NULL",
su->obj->ob_type->tp_name);
else
return PyString_FromFormat(
- "<super: <type '%s'>, NULL>",
+ "<super: <class '%s'>, NULL>",
su->type ? su->type->tp_name : "NULL");
}