Lichen

tests/name_attribute.py

934:2989aab1b4f7
7 months ago Paul Boddie Renamed the utf8string class to unicode, eliminating the unicode function. This means that the simple case of merely returning an object if it is already a Unicode object no longer occurs when using the unicode callable, but such behaviour might be better supported with more general customised instantiation functionality.
     1 import operator     2      3 class C:     4     def f(self): pass     5      6 def name(x):     7     print x.__name__     8     print x.__parent__.__name__     9     print str(x)    10     11 def attrname(x):    12     print x.f.__name__    13     print x.f.__parent__.__name__    14     print str(x.f)    15     16 c = C()    17 print c.__name__                        # C    18 print c.__parent__.__name__             # __main__    19 print str(c)                            # <__main__.C instance>    20 print C.__name__                        # C    21 print C.__parent__.__name__             # __main__    22 print str(C)                            # __main__.C    23 print c.f.__name__                      # f    24 print c.f.__parent__.__name__           # C    25 print str(c.f)                          # __main__.C.f    26 print C.f.__name__                      # f    27 print C.f.__parent__.__name__           # C    28 print str(C.f)                          # __main__.C.f    29     30 name(c)                                 # C    31                                         # __main__    32                                         # <__main__.C instance>    33 name(C)                                 # C    34                                         # __main__    35                                         # __main__.C    36 attrname(c)                             # f    37                                         # C    38                                         # __main__.C.f    39 attrname(C)                             # f    40                                         # C    41                                         # __main__.C.f    42 name(c.f)                               # f    43                                         # C    44                                         # __main__.C.f    45 name(C.f)                               # f    46                                         # C    47                                         # __main__.C.f    48     49 # If it were defined, operator.__name__ would be module.    50     51 print operator.__name__                 # operator    52     53 # If it were defined, operator.add.__name__ would be function.    54     55 print operator.add.__name__             # add    56 print operator.add.__parent__.__name__  # operator.binary