Die Funktion "hasattr" in Python (Die Funktion "hasattr" in Python), Lektion, Seite 723968
https://www.purl.org/stefan_ram/pub/hasattr_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Attribute in Python 

Bindungstabellen

Wie schon früher behandelt wurde, verfügt jedes Modul über eine Bindungstabelle, welche zu jedem Namen das Objekt enthält, an welches er gebunden ist.

Bindungstabelle (in symbolischer Darstellung)
-|--------------|-----------------|-
| erster Name | erstes Objekt |
-|--------------|-----------------|-
| zweiter Name | zweites Objekt |
-|--------------|-----------------|-
| dritter Name | drittes Objekt |
-|--------------|-----------------|-
| u.s.w. | u.s.w. |

In der Konsole findet man beispielsweise, daß der Name »__name__« vermittels der Bindungstabelle des Moduls an die Zeichenfolge »__main__« gebunden ist.

Bindungstabelle (in symbolischer Darstellung)
-|--------------|-----------------|-
| __name__ | "__main__" |
-|--------------|-----------------|-

Wird ein Name ausgewertet, ergibt sich dann als Wert für den Namen das Objekt, an das er gebunden ist.

Protokoll
__name__
'__main__'

Mit dem Begriff „Attribut  eines Objekts“ meint man – je nach Zusammenhang – entweder einen Namen  aus der Bindungstabelle des Objektes (den Attributnamen ) oder das Objekt an das ein solcher Name gebunden ist (den Attributwert ) oder die Paarung aus diese beiden (den Attributeintrag  in der Bindungstabelle).

Oft stellen wir uns vor, daß die Attribute in dem Objekt enthalten  sind, in dessen Bindungstabelle sie eingetragen sind.

Objekte als Bindungstabellen

Jedes  Objekt enthält eine Bindungstabelle, die zum Nachschlagen eines Namens genutzt werden kann.

dir

Die Funktion ›dir‹ ergibt eine Liste mit den Namen der Bindungstabelle ihres Argumentobjekts.

Protokoll (gekürzt)
dir( 1 )
[…, 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
Protokoll
"numerator" in dir( 1 )
True
Protokoll
"numberator" in dir( 1 )
False

hasattr

Ein aufrufbares Objekt nennen wir hier auch einen „Funktor“.
Einen Funktor, der mit zwei Argumenten aufgerufen werden kann, nennen wir auch einen zweistelligen  Funktor.
Einen Funktor, dessen Ergebnis den Typ ›bool‹ hat, nennen wir auch einen wahrheitswertigen  Funktor.
Einen zweistelligen wahrheitswertigen Funktor nennen wir hier auch eine Relation.

Die Funktion ›hasattr‹ ist eine Relation, die besagt, ob das zweite Argument ein Attribut des ersten Arguments ist.

Protokoll
hasattr( 1, "numerator" )
True
Protokoll
hasattr( 1, "numberator" )
False

getattr

Ein aufrufbares Objekt nennen wir hier auch einen „Funktor“.
Einen Funktor, der mit zwei Argumenten aufgerufen werden kann, nennen wir auch einen zweistelligen  Funktor.

Die Funktion ›getattr‹ ist ein zweistelliger Funktor, der das Objekt ergibt, an welches das zweite Argument in der Bindungstabelle des ersten Arguments gebunden ist.

Protokoll
getattr( 1, "numerator" )
1
Protokoll (übersetzt)
getattr( 1, "nummerator" )
AttributeError: 'int'-Objekte haben kein Attribut 'nummerator'.

setattr

Ein aufrufbares Objekt nennen wir hier auch einen „Funktor“.
Einen Funktor, der mit drei Argumenten aufgerufen werden kann, nennen wir auch einen dreistelligen  Funktor.

Die Funktion ›setattr‹ ist ein dreistelliger Funktor, der das zweite Argument in der Bindungstabelle des ersten Arguments an das dritte Argument bindet.

Protokoll

o = lambda: None

hasattr( o, "Beispiel" )

False

setattr( o, "Beispiel", 427 )

hasattr( o, "Beispiel" )

True
getattr( o, "Beispiel" )
427

In vielen Fällen können Attribute aber nicht so einfach zu Objekten hinzugefügt werden.

Protokoll (übersetzt)
setattr( 1, "numerator", 2 )
AttributeError: Das Attribut 'numerator' von 'int'-Objekten ist nicht änderbar.
Protokoll (übersetzt)

setattr( 1, "numerator", 2 )

AttributeError: 'int'-Objekte haben kein Attribut 'Beispiel'

Übungsaufgaben

?   Wert- und Wirkaufrufe

Ein Wertaufruf  ist ein Aufruf, dessen Auswertung einen anderen Wert als ›None‹ ergibt.

Ein Wirkaufruf  ist ein Aufruf, dessen Auswertung (laut der Dokumentation des Aufgerufenem) etwas verändert.

/   Übungsaufgabe

Ermitteln Sie den Typ des Attributs ›nan‹ des Objekts ›math‹ nach Ausführung der Anweisung »import math«.

/   Übungsaufgabe

Lassen Sie die Anweisung »import math« ausführen.

Rufen Sie dann den Funktor ›help‹ mit dem Wert des Attributs ›factorial‹ des Objekts ›math‹ als Argument auf.

Rufen Sie dann das Attribut ›factorial‹ des Objekts ›math‹ auf.

/   Übungsaufgabe

Rufen Sie den Funktor ›help‹ mit dem Wert des Attributs ›capitalize‹ des Wertes «"abc"» als Argument auf.

Rufen Sie dann das Attribut ›capitalize‹ des Wertes «"abc"» auf.

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723968 stefan_ram:723968 Die Funktion "hasattr" in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723968, slrprddef723968, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/hasattr_python