Spezielle Bezeichner (Identifier)           (C) 2017-2021 T.Birnthaler OSTC GmbH
=================================

Doku --> docs.python.org/dev/peps/pep-0008
         docs.python.org/3/reference/lexical_analysis.html#identifiers-and-keywords
         www.pep8.org

Folgende Namenskonventionen für Bezeichner (Identifier) gelten in Python:

+----------+-------------------------------------------------------------------+
| Name     | Bedeutung                                                         |
+----------+-------------------------------------------------------------------+
| __*__    | INTERNER Name (reserviert für Python selbst)                      |
| __*      | Privater Name in Klasse (mangled --> _CLASS__*)                   |
| _*       | Protected Name in Klasse (nur für Vererbung)                      |
|          | Interner Name in Modul (für modulinterne Zwecke)                  |
|          | (von "from MODULE import *" nicht importiert)                     |
|          | (Hilfsklasse, Hilfsfunktion, ...)                                 |
+----------+-------------------------------------------------------------------+
| *_       | Schlüsselwort als Bezeichner (z.B. "if_")                         |
| _        | Ergebnis der letzten Auswertung im interaktiven Interpreter       |
|          | Temporäre Variable in Schleife (for _ in ...)                     |
|          | "Wegwerfvariable" (syntaktisch notwendig, inhaltlich irrelevant)  |
|          | Internationalisierung (i18n, l10n, gettext)                       |
+----------+-------------------------------------------------------------------+
| self     | Objekt in normaler Methode einer Klasse                           |
| other    | 2. Objekt in normaler 2-wertiger Methode einer Klasse             |
| cls      | Klasse in Klassen-Methode einer Klasse                            |
| *args    | "Sammler" für Positions-Parameter in Funktion (--> Tupel)         |
| **kwargs | "Sammler" für Keyword-Parameter in Funktion (--> Dictionary)      |
+----------+------------------------------------------------------+------------+
| NAME     | Konstante       (GROSSB., Unterstrich, Ziffern)      | Subst/Adj  |
|          | (Ausnahmen: True, False, None, math.inf, math.nan)   |            |
| Name     | Klassenname     (CamelCase)                          | Substantiv |
| Name     | Exceptionklasse (CamelCase)                          | Substantiv |
| name     | Modulname       (kleinb., KEIN Unterstrich, Ziffern) | Substantiv |
| name     | Variablename    (kleinb., Unterstrich, Ziffern)      | Subst/Adj  |
| name     | Funktionsname   (kleinb., Unterstrich, Ziffern)      | Verb       |
| name     | Objektname      (kleinb., Unterstrich, Ziffern)      | Subst/Adj  |
+----------+------------------------------------------------------+------------+

Qualifizierte Namen werden durch "." getrennt (der "." wird beim Zugriff auf
das Dateisystem in den jeweiligen Verz.-Trenner "\" oder "/" umgesetzt).

  MODUL.VARIABLE              # Zugriff auf Variable in Modul
  MODUL.FUNKTION()            # Aufruf von Funktion in Modul
  PAKET.SUBMODUL.VARIABLE     # Zugriff auf Variable in Paket-Untermodul
  PAKET.SUBMODUL.FUNKTION()   # Aufruf von Funktion in Paket-Untermodul
  PFAD.ZU.MODUL.VARIABLE      # Zugriff auf Variable in Modul in Unterverzeichnis
  PFAD.ZU.MODUL.FUNKTION()    # Aufruf von Funktion in Modul in Unterverzeichnis

Komponenten von Klassen und Objekten werden ebenfalls durch "." im Namen
angesprochen:

  OBJEKT.ATTRIBUT             # Zugriff auf Attribut von Objekt
  OBJEKT.METHODE()            # Aufruf von Methode für Objekt
  KLASSE.ATTRIBUT             # Zugriff auf Klassen-Attribut
  KLASSE.METHODE()            # Aufruf von Klassen-Methode oder statischer Methode
  FUNKTION.ATTRIBUT           # Zugriff auf Funktions-Attribut

Spezielle Attribute
-------------------
Spezielle Attribute, werden teilweise von der built-in Funktion "dict()" nicht
aufgelistet, wohl aber von der Funktion "dir()".

+------------------+-----------------------------------------------------------+
| Attribut         | Beschreibung                                              |
+------------------+-----------------------------------------------------------+
| __doc__          | Dokumentationsstring ("Docstring")                        |
| __name__         | Name Klasse/Funktion/Methode/Descriptor/Generator-Instanz |
| __qualname__     | Qualifizierter Name Klasse/.../Generator-Instanz          |
| __module__       | Modul in dem Name definiert ist                           |
| __all__          | In __init__.py autom. zu lad. Subm. bei from ... import * |
+------------------+-----------------------------------------------------------+
| __call__         | Codeobjekt einer Funktion                                 |
| __defaults__     | Tuple mit Defaultwerten für Position-Parameter von Funk.  |
| __kwdefaults__   | Dictionary mit Defaultwerten für Keyword-Parameter von F. |
| __annotations__  | Dictionary mit "Annotations" für Param. + Rückgabewert    |
| __closure__      | Bindungen freier Variablen an Werte                       |
+------------------+-----------------------------------------------------------+
| __mro__          | Tupel der Basisklassen für Methodenauflösung (linear)     |
| mro()            | Liefert Ergebnis für __mro__ bei Klassen-Instanziierung   |
| __subclasses__() | Liste schwacher Referenzen zu direkten Unterklassen       |
+------------------+-----------------------------------------------------------+
| __class__        | Klasse zu der eine Instanz gehört                         |
| __bases__        | Tupel der Basisklassen eines Klassenobjekts               |
| __dict__         | Speicher für dynamische Objektattribute (Name + Wert)     |
| __slots__        | Namen der statische Objektattribute                       |
| __weakref__      | "Schwache" Referenzen                                     |
+------------------+-----------------------------------------------------------+
| __globals__      | Referenz zu Dictionary mit globalen Variablen             |
+------------------+-----------------------------------------------------------+
| __self__         | Objekt auf dem eine Methode arbeitet                      |
| __func__         | Funktion die hinter einer Methode steckt (implementiert)  |
+------------------+-----------------------------------------------------------+


Spezielle Methoden