mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
	
	
		
			24 lines
		
	
	
	
		
			529 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			24 lines
		
	
	
	
		
			529 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								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)
							 |