You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
529 B
24 lines
529 B
3 years ago
|
import unittest
|
||
|
|
||
|
class TestLoadAttrCache(unittest.TestCase):
|
||
|
def test_descriptor_added_after_optimization(self):
|
||
|
class Descriptor:
|
||
|
pass
|
||
|
|
||
|
class C:
|
||
|
def __init__(self):
|
||
|
self.x = 1
|
||
|
x = Descriptor()
|
||
|
|
||
|
def f(o):
|
||
|
return o.x
|
||
|
|
||
|
o = C()
|
||
|
for i in range(1025):
|
||
|
assert f(o) == 1
|
||
|
|
||
|
Descriptor.__get__ = lambda self, instance, value: 2
|
||
|
Descriptor.__set__ = lambda *args: None
|
||
|
|
||
|
self.assertEqual(f(o), 2)
|