2017-03-10 | Paul Boddie | raw annotate files changeset graph | Prevent __data__ accesses via anonymous accessors from trying to find the attribute on classes since __data__ is always provided by the immediate object and because the check_and_load_via_any operation uses a null value internally to detect failure that can be confused with a genuine __data__ attribute with a zero value (such as the integer zero). |
1 def f(): 2 s = "test" 3 m = s.__len__ 4 n = "test".__len__ 5 print m # __builtins__.str.basestring.__len__ 6 print m() # 4 7 print n # __builtins__.str.basestring.__len__ 8 print n() 9 10 def g(): 11 l = [1, 2] 12 m = l.__len__ 13 n = [1, 2].__len__ 14 print l # [1, 2] 15 print m # __builtins__.list.list.__len__ 16 print m() # 2 17 print n # __builtins__.list.list.__len__ 18 print n() # 2 19 20 f() 21 g()