mirror of
				https://github.com/pocketpy/pocketpy
				synced 2025-10-25 14:00:18 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			101 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| class A:
 | |
|     def __init__(self, a, b):
 | |
|         self.a = a
 | |
|         self.b = b
 | |
| 
 | |
|     def add(self):
 | |
|         return self.a + self.b
 | |
| 
 | |
|     def sub(self):
 | |
|         return self.a - self.b
 | |
|     
 | |
| a = A(1, 2)
 | |
| assert a.add() == 3
 | |
| assert a.sub() == -1
 | |
| 
 | |
| assert A.__base__ is object
 | |
| 
 | |
| class B(A):
 | |
|     def __init__(self, a, b, c):
 | |
|         super(B, self).__init__(a, b)
 | |
|         self.c = c
 | |
| 
 | |
|     def add(self):
 | |
|         return self.a + self.b + self.c
 | |
| 
 | |
|     def sub(self):
 | |
|         return self.a - self.b - self.c
 | |
| 
 | |
| assert B.__base__ is A    
 | |
| 
 | |
| b = B(1, 2, 3)
 | |
| assert b.add() == 6
 | |
| assert b.sub() == -4
 | |
| 
 | |
| class C(B):
 | |
|     def __init__(self, a, b, c, d):
 | |
|         super(C, self).__init__(a, b, c)
 | |
|         self.d = d
 | |
| 
 | |
|     def add(self):
 | |
|         return self.a + self.b + self.c + self.d
 | |
| 
 | |
|     def sub(self):
 | |
|         return self.a - self.b - self.c - self.d
 | |
|     
 | |
| assert C.__base__ is B
 | |
| 
 | |
| c = C(1, 2, 3, 4)
 | |
| assert c.add() == 10
 | |
| assert c.sub() == -8
 | |
| 
 | |
| class D(C):
 | |
|     def __init__(self, a, b, c, d, e):
 | |
|         super(D, self).__init__(a, b, c, d)
 | |
|         self.e = e
 | |
| 
 | |
|     def add(self):
 | |
|         return super(D, self).add() + self.e
 | |
| 
 | |
|     def sub(self):
 | |
|         return super(D, self).sub() - self.e
 | |
|     
 | |
| assert D.__base__ is C
 | |
| 
 | |
| d = D(1, 2, 3, 4, 5)
 | |
| assert d.add() == 15
 | |
| assert d.sub() == -13
 | |
| 
 | |
| assert isinstance(1, int)
 | |
| assert isinstance(1, object)
 | |
| assert isinstance(C, type)
 | |
| assert isinstance(C, object)
 | |
| assert isinstance(d, object)
 | |
| assert isinstance(d, C)
 | |
| assert isinstance(d, B)
 | |
| assert isinstance(d, A)
 | |
| assert isinstance(object, object)
 | |
| assert isinstance(type, object)
 | |
| 
 | |
| class A:
 | |
|     a = 1
 | |
|     b = 2
 | |
| 
 | |
| assert A.a == 1
 | |
| assert A.b == 2
 | |
| 
 | |
| class B(A):
 | |
|     b = 3
 | |
|     c = 4
 | |
| 
 | |
| # assert B.a == 1  ...bug here
 | |
| assert B.b == 3
 | |
| assert B.c == 4
 | |
| 
 | |
| from c import void_p
 | |
| 
 | |
| class A(void_p):
 | |
|     pass
 | |
|     
 | |
| a = A()
 | |
| assert repr(a).startswith('<void* at') |