[Python-3000] Heaptypes (original) (raw)
Thomas Heller theller at ctypes.org
Wed Jul 11 16:39:00 CEST 2007
- Previous message: [Python-3000] Heaptypes
- Next message: [Python-3000] Heaptypes
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Guido van Rossum schrieb:
There are currently three "string" types, here shown with there repr styles:
- str = 'same as unicode in 2.x' - bytes = b'new, mutable list of small ints' - str8 = s'same as str in 2.x' The s'...' notation means it's an 8-bit string (not a bytes array). This is not supported in the syntax; it's just used on output. (Use str8(b'...') to create one of these.) I'm still hoping to remove this type before the release, but it appears to be still necessary so far. I don't know enouch about ...CallFunction to help you with the rest.
Let me explain it in other words. This code creates a new type:
ht = type("name", (object,), {}) [47054 refs] ht <class '__main__.name'> [47093 refs]
The 'name' attribute is a (unicode) string:
ht.name 'name' [47121 refs]
But I can also create a type in this way:
ht = type(str8(b"name"), (object,), {}) [47208 refs]
The name attribute is a str8 instance:
ht.name s'name' [47236 refs]
Printing the type triggers an assertion:
ht Assertion failed: obj && PyUnicode_Check(obj), file \svn\py3k-struni\Objects\unicodeobject.c, line 630 C:\svn\py3k-struni\PCbuild>
because parts of the code assume that the 'name' is a (unicode) string.
Thomas
- Previous message: [Python-3000] Heaptypes
- Next message: [Python-3000] Heaptypes
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]