[Python-de] types.SetType

"Martin v. Löwis" martin at v.loewis.de
So Feb 11 15:36:22 CET 2007


Dinu Gherman schrieb:
> Was muesste ich also in den folgenden Zeilen fuer
> ??? einsetzen, um die gewuenschte Ausgabe zu bekommen?
> 
>    obj = NotImplemented
> 
>    if type(obj) == ???:
>        print "verstanden"
> 
>    if isinstance(obj, ???):
>        print "verstanden"
> 
> Ich vermute, die Antwort lautet: ??? = type(NotImplemented).

Korrekt. Was aber hat das mit SetType zu tun? (siehe Subject)

In dem konkreten Fall würde ich aber

      if obj is NotImplemented:
         print "verstanden"

schreiben: NotImplemented ist ein Singleton. Man schreibt ja
auch

      if foo is None:

anstelle von

      if isinstance(foo, types.NoneType)

> Mit anderen Worten: woher bekomme ich das NotImplementedType,
> ohne type(NotImplemented) benutzen zu muessen?

Siehe oben: i.d.R. solltest Du nicht auf NotImplementedType
testen, sondern auf NotImplemented.

> Antwort: aus
> dem Modul types. Wenn es keine andere Moeglichkeit gibt, ist
> das Modul nicht ueberfluessig.

Mag sein. Du änderst aber das Thema: Deine ursprüngliche
Frage war ja nach set und nicht nach NotImplementedType.
Auch für den Test, den Du jetzt durchführen willst
("ist obj ein Exemplar von NotImplementedType") benötigt
man das types-Modul nicht, weil NotImplemted ein Singleton
ist.

> Wenn dem so ist und kein SetType/FrozenSetType drin ist, be-
> trachte ich das types-Modul als unvollstaendig, weil es einen
> uniformen Zugriff auf alle Typen ueber diese Variablen nicht
> mehr ermoeglicht.

Es ist aber nicht der Zweck des types-Moduls, *alle* Typen
zu enthalten. Es ist auch nicht realistisch anzunehmen, dass
es das jemals könnte. Python-Bibliotheken können selber
neue Typen definieren, aber selbst für die mit Python standardmäßig
ausgelieferten Typen ist es nicht praktikabel, alle im types-Modul
aufzuführen.

Anbei eine Liste von Typen, die es in Python 2.5 gibt, aber
nicht im types-Modul. Diese Liste ist nicht vollständig
(schon weil es manche Typen nur auf manchen Systemen gibt).

> Ob das tragisch ist, sei dahingestellt, aber es ist nicht
> konsistent und nicht elegant.

set und frozenset aufzunehmen würde es nicht konsistent
machen. Es wäre tragisch, wenn es konsistent wäre, weil
dann 'import types' praktisch die gesamte Python-Bibliothek
importieren müsste.

Ciao,
Martin

('Carbon.File', 'Alias')
('Carbon.File', 'FInfo')
('Carbon.File', 'FSCatalogInfo')
('Carbon.File', 'FSRef')
('Carbon.File', 'FSSpec')
('MacOS', 'Error')
('_AE', 'AEDesc')
('_App', 'ThemeDrawingState')
('_CF', 'CFArrayRef')
('_CF', 'CFDataRef')
('_CF', 'CFDictionaryRef')
('_CF', 'CFMutableArrayRef')
('_CF', 'CFMutableDataRef')
('_CF', 'CFMutableDictionaryRef')
('_CF', 'CFMutableStringRef')
('_CF', 'CFStringRef')
('_CF', 'CFTypeRef')
('_CF', 'CFURLRef')
('_CG', 'CGContextRef')
('_CarbonEvt', 'EventHandlerCallRef')
('_CarbonEvt', 'EventHandlerRef')
('_CarbonEvt', 'EventHotKeyRef')
('_CarbonEvt', 'EventLoopRef')
('_CarbonEvt', 'EventLoopTimerRef')
('_CarbonEvt', 'EventQueueRef')
('_CarbonEvt', 'EventRef')
('_CarbonEvt', 'EventTargetRef')
('_Cm', 'Component')
('_Cm', 'ComponentInstance')
('_Ctl', 'Control')
('_Dlg', 'Dialog')
('_Drag', 'DragObj')
('_IBCarbon', 'IBNibRef')
('_List', 'List')
('_Menu', 'Menu')
('_Mlte', 'TXNFontMenuObject')
('_Mlte', 'TXNObject')
('_OSA', 'OSAComponentInstance')
('_Qd', 'BitMap')
('_Qd', 'GrafPort')
('_Qdoffs', 'GWorld')
('_Qt', 'IdleManager')
('_Qt', 'Media')
('_Qt', 'Movie')
('_Qt', 'MovieController')
('_Qt', 'SGOutput')
('_Qt', 'TimeBase')
('_Qt', 'Track')
('_Qt', 'UserData')
('_Res', 'Resource')
('_Snd', 'SPB')
('_Snd', 'SndChannel')
('_TE', 'TE')
('_Win', 'Window')
('__builtin__', 'CArgObject')
('__builtin__', 'Element')
('__builtin__', 'EncodingMap')
('__builtin__', 'MultibyteCodec')
('__builtin__', 'MultibyteIncrementalDecoder')
('__builtin__', 'MultibyteIncrementalEncoder')
('__builtin__', 'MultibyteStreamReader')
('__builtin__', 'MultibyteStreamWriter')
('__builtin__', 'StgDict')
('__builtin__', 'Struct')
('__builtin__', 'basestring')
('__builtin__', 'classmethod')
('__builtin__', 'deque_iterator')
('__builtin__', 'deque_reverse_iterator')
('__builtin__', 'enumerate')
('__builtin__', 'frozenset')
('__builtin__', 'iterparse')
('__builtin__', 'property')
('__builtin__', 'reversed')
('__builtin__', 'set')
('__builtin__', 'sqlite3Node')
('__builtin__', 'staticmethod')
('__builtin__', 'super')
('__builtin__', 'weakref')
('_csv', 'Dialect')
('_csv', 'Error')
('_csv', 'reader')
('_csv', 'writer')
('_ctypes', 'Array')
('_ctypes', 'ArrayType')
('_ctypes', 'CField')
('_ctypes', 'CFuncPtr')
('_ctypes', 'CFuncPtrType')
('_ctypes', 'PointerType')
('_ctypes', 'SimpleType')
('_ctypes', 'StructType')
('_ctypes', 'Structure')
('_ctypes', 'Union')
('_ctypes', 'UnionType')
('_ctypes', '_CData')
('_ctypes', '_Pointer')
('_ctypes', '_SimpleCData')
('_curses', 'error')
('_curses_panel', 'error')
('_hashlib', 'HASH')
('_lsprof', 'Profiler')
('_lsprof', 'profiler_entry')
('_lsprof', 'profiler_subentry')
('_random', 'Random')
('_sha256', 'sha224')
('_sha256', 'sha256')
('_sha512', 'sha384')
('_sha512', 'sha512')
('_testcapi', 'error')
('_types', 'Helper')
('array', 'array')
('audioop', 'error')
('autoGIL', 'AutoGILError')
('binascii', 'Error')
('binascii', 'Incomplete')
('bsddb', 'error')
('cPickle', 'BadPickleGet')
('cPickle', 'PickleError')
('cPickle', 'Pickler')
('cPickle', 'PicklingError')
('cPickle', 'UnpickleableError')
('cPickle', 'Unpickler')
('cPickle', 'UnpicklingError')
('cStringIO', 'StringI')
('cStringIO', 'StringO')
('codecs', 'BufferedIncrementalDecoder')
('codecs', 'BufferedIncrementalEncoder')
('codecs', 'CodecInfo')
('codecs', 'IncrementalDecoder')
('codecs', 'IncrementalEncoder')
('collections', 'defaultdict')
('collections', 'deque')
('copy', 'Error')
('ctypes', 'ArgumentError')
('datetime', 'date')
('datetime', 'datetime')
('datetime', 'time')
('datetime', 'timedelta')
('datetime', 'tzinfo')
('dbm', 'error')
('distutils.errors', 'CCompilerError')
('distutils.errors', 'CompileError')
('distutils.errors', 'DistutilsArgError')
('distutils.errors', 'DistutilsClassError')
('distutils.errors', 'DistutilsError')
('distutils.errors', 'DistutilsExecError')
('distutils.errors', 'DistutilsFileError')
('distutils.errors', 'DistutilsGetoptError')
('distutils.errors', 'DistutilsInternalError')
('distutils.errors', 'DistutilsModuleError')
('distutils.errors', 'DistutilsOptionError')
('distutils.errors', 'DistutilsPlatformError')
('distutils.errors', 'DistutilsSetupError')
('distutils.errors', 'DistutilsTemplateError')
('distutils.errors', 'LibError')
('distutils.errors', 'LinkError')
('distutils.errors', 'PreprocessError')
('distutils.errors', 'UnknownFileError')
('dl', 'error')
('encodings', 'CodecRegistryError')
('encodings.ascii', 'IncrementalDecoder')
('encodings.ascii', 'IncrementalEncoder')
('exceptions', 'ArithmeticError')
('exceptions', 'AssertionError')
('exceptions', 'AttributeError')
('exceptions', 'BaseException')
('exceptions', 'DeprecationWarning')
('exceptions', 'EOFError')
('exceptions', 'EnvironmentError')
('exceptions', 'Exception')
('exceptions', 'FloatingPointError')
('exceptions', 'FutureWarning')
('exceptions', 'GeneratorExit')
('exceptions', 'IOError')
('exceptions', 'ImportError')
('exceptions', 'ImportWarning')
('exceptions', 'IndentationError')
('exceptions', 'IndexError')
('exceptions', 'KeyError')
('exceptions', 'KeyboardInterrupt')
('exceptions', 'LookupError')
('exceptions', 'MemoryError')
('exceptions', 'NameError')
('exceptions', 'NotImplementedError')
('exceptions', 'OSError')
('exceptions', 'OverflowError')
('exceptions', 'PendingDeprecationWarning')
('exceptions', 'ReferenceError')
('exceptions', 'RuntimeError')
('exceptions', 'RuntimeWarning')
('exceptions', 'StandardError')
('exceptions', 'StopIteration')
('exceptions', 'SyntaxError')
('exceptions', 'SyntaxWarning')
('exceptions', 'SystemError')
('exceptions', 'SystemExit')
('exceptions', 'TabError')
('exceptions', 'TypeError')
('exceptions', 'UnboundLocalError')
('exceptions', 'UnicodeDecodeError')
('exceptions', 'UnicodeEncodeError')
('exceptions', 'UnicodeError')
('exceptions', 'UnicodeTranslateError')
('exceptions', 'UnicodeWarning')
('exceptions', 'UserWarning')
('exceptions', 'ValueError')
('exceptions', 'Warning')
('exceptions', 'ZeroDivisionError')
('functools', 'partial')
('grp', 'struct_group')
('hotshot', 'ProfilerError')
('imageop', 'error')
('imp', 'NullImporter')
('itertools', '_grouper')
('itertools', 'chain')
('itertools', 'count')
('itertools', 'cycle')
('itertools', 'dropwhile')
('itertools', 'groupby')
('itertools', 'ifilter')
('itertools', 'ifilterfalse')
('itertools', 'imap')
('itertools', 'islice')
('itertools', 'izip')
('itertools', 'repeat')
('itertools', 'starmap')
('itertools', 'takewhile')
('itertools', 'tee')
('itertools', 'tee_dataobject')
('locale', 'Error')
('nis', 'error')
('operator', 'attrgetter')
('operator', 'itemgetter')
('parser', 'ParserError')
('posix', 'stat_result')
('posix', 'statvfs_result')
('resource', 'error')
('resource', 'struct_rusage')
('rgbimg', 'error')
('select', 'error')
('site', 'Quitter')
('site', '_Helper')
('site', '_Printer')
('socket', 'error')
('socket', 'gaierror')
('socket', 'herror')
('socket', 'sslerror')
('socket', 'timeout')
('sqlite3', 'Cache')
('sqlite3', 'Connection')
('sqlite3', 'Cursor')
('sqlite3', 'DataError')
('sqlite3', 'DatabaseError')
('sqlite3', 'Error')
('sqlite3', 'IntegrityError')
('sqlite3', 'InterfaceError')
('sqlite3', 'InternalError')
('sqlite3', 'NotSupportedError')
('sqlite3', 'OperationalError')
('sqlite3', 'PrepareProtocol')
('sqlite3', 'ProgrammingError')
('sqlite3', 'Row')
('sqlite3', 'Statement')
('sqlite3', 'Warning')
('sre_constants', 'error')
('string', 'Template')
('string', '_TemplateMetaclass')
('struct', 'error')
('termios', 'error')
('time', 'struct_time')
('warnings', '_OptionError')
('xml.parsers.expat', 'ExpatError')
('zipimport', 'ZipImportError')
('zipimport', 'zipimporter')
('zlib', 'error')