mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						|
Define names for built-in types that aren't directly accessible as a builtin.
 | 
						|
"""
 | 
						|
import sys
 | 
						|
 | 
						|
# Iterators in Python aren't a matter of type but of protocol.  A large
 | 
						|
# and changing number of builtin types implement *some* flavor of
 | 
						|
# iterator.  Don't check the type!  Use hasattr to check for both
 | 
						|
# "__iter__" and "__next__" attributes instead.
 | 
						|
 | 
						|
def _f(): pass
 | 
						|
FunctionType = type(_f)
 | 
						|
LambdaType = type(lambda: None)         # Same as FunctionType
 | 
						|
CodeType = type(_f.__code__)
 | 
						|
 | 
						|
def _g():
 | 
						|
    yield 1
 | 
						|
GeneratorType = type(_g())
 | 
						|
 | 
						|
class _C:
 | 
						|
    def _m(self): pass
 | 
						|
MethodType = type(_C()._m)
 | 
						|
 | 
						|
BuiltinFunctionType = type(len)
 | 
						|
BuiltinMethodType = type([].append)     # Same as BuiltinFunctionType
 | 
						|
 | 
						|
ModuleType = type(sys)
 | 
						|
 | 
						|
try:
 | 
						|
    raise TypeError
 | 
						|
except TypeError:
 | 
						|
    tb = sys.exc_info()[2]
 | 
						|
    TracebackType = type(tb)
 | 
						|
    FrameType = type(tb.tb_frame)
 | 
						|
    tb = None; del tb
 | 
						|
 | 
						|
# Extension types defined in a C helper module.  XXX There may be no
 | 
						|
# equivalent in implementations other than CPython, so it seems better to
 | 
						|
# leave them undefined then to set them to e.g. None.
 | 
						|
try:
 | 
						|
    import _types
 | 
						|
except ImportError:
 | 
						|
    pass
 | 
						|
else:
 | 
						|
    GetSetDescriptorType = type(_types.Helper.getter)
 | 
						|
    MemberDescriptorType = type(_types.Helper.member)
 | 
						|
    del _types
 | 
						|
 | 
						|
del sys, _f, _g, _C,                              # Not for export
 |