]> granicus.if.org Git - python/commitdiff
Issue #1583863: An unicode subclass can now override the __str__ method
authorVictor Stinner <victor.stinner@haypocalc.com>
Mon, 22 Mar 2010 12:24:37 +0000 (12:24 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Mon, 22 Mar 2010 12:24:37 +0000 (12:24 +0000)
Lib/test/test_unicode.py
Misc/NEWS
Objects/unicodeobject.c

index a859c0faa7ece91b5058600354f450e5cd0898a4..973a00870fecc4749c9cd83d037d934f7b04f80b 100644 (file)
@@ -1193,6 +1193,17 @@ class UnicodeTest(
         self.assertRaises(MemoryError, alloc)
         self.assertRaises(MemoryError, alloc)
 
+    def test_format_subclass(self):
+        class U(unicode):
+            def __str__(self):
+                return '__str__ overridden'
+            def __unicode__(self):
+                return u'__unicode__ overridden'
+        u = U(u'xxx')
+        self.assertEquals("%s" % u, u'__unicode__ overridden')
+        self.assertEquals("{}".format(u), u'__unicode__ overridden')
+
+
 def test_main():
     test_support.run_unittest(__name__)
 
index f93486ef7db3422d8d5d6cb8fb7d50b1746d34ba..dd61f4f64c2a56feed88ded45256d848801d381b 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@ What's New in Python 2.7 beta 1?
 Core and Builtins
 -----------------
 
+- Issue #1583863: An unicode subclass can now override the __str__ method
+
 - Issue #6474: Make error message from passing an inadequate number of keyword
   arguments to a function correct.
 
index 113a460e27917d14ebc2029cdf03a9898211dda7..82af3a21f5dc40cf6fea00dd298a2bb1c496a83b 100644 (file)
@@ -8466,7 +8466,7 @@ PyObject *PyUnicode_Format(PyObject *format,
 
             case 's':
             case 'r':
-                if (PyUnicode_Check(v) && c == 's') {
+                if (PyUnicode_CheckExact(v) && c == 's') {
                     temp = v;
                     Py_INCREF(temp);
                 }