mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
- A new type object, 'string', is added. This is a common base type
for 'str' and 'unicode', and can be used instead of types.StringTypes, e.g. to test whether something is "a string": isinstance(x, string) is True for Unicode and 8-bit strings. This is an abstract base class and cannot be instantiated directly.
This commit is contained in:
parent
9ee4b94f51
commit
cacfc07d08
6 changed files with 69 additions and 2 deletions
|
@ -2855,6 +2855,60 @@ str_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
|||
return pnew;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
basestring_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"The string type cannot be instantiated");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char basestring_doc[] =
|
||||
"Type string cannot be instantiated; it is the base for str and unicode.";
|
||||
|
||||
PyTypeObject PyBaseString_Type = {
|
||||
PyObject_HEAD_INIT(&PyType_Type)
|
||||
0,
|
||||
"string",
|
||||
0,
|
||||
0,
|
||||
0, /* tp_dealloc */
|
||||
0, /* tp_print */
|
||||
0, /* tp_getattr */
|
||||
0, /* tp_setattr */
|
||||
0, /* tp_compare */
|
||||
0, /* tp_repr */
|
||||
0, /* tp_as_number */
|
||||
0, /* tp_as_sequence */
|
||||
0, /* tp_as_mapping */
|
||||
0, /* tp_hash */
|
||||
0, /* tp_call */
|
||||
0, /* tp_str */
|
||||
0, /* tp_getattro */
|
||||
0, /* tp_setattro */
|
||||
0, /* tp_as_buffer */
|
||||
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
|
||||
basestring_doc, /* tp_doc */
|
||||
0, /* tp_traverse */
|
||||
0, /* tp_clear */
|
||||
0, /* tp_richcompare */
|
||||
0, /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
0, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
&PyBaseObject_Type, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
0, /* tp_descr_get */
|
||||
0, /* tp_descr_set */
|
||||
0, /* tp_dictoffset */
|
||||
0, /* tp_init */
|
||||
0, /* tp_alloc */
|
||||
basestring_new, /* tp_new */
|
||||
0, /* tp_free */
|
||||
};
|
||||
|
||||
static char string_doc[] =
|
||||
"str(object) -> string\n\
|
||||
\n\
|
||||
|
@ -2893,7 +2947,7 @@ PyTypeObject PyString_Type = {
|
|||
string_methods, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
&PyBaseString_Type, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
0, /* tp_descr_get */
|
||||
0, /* tp_descr_set */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue