Weil der Typ str
ein Typ ist, der kein Attribut dict hat. Von die Dokumentation , Abschnitt "Klassen":
Eine Klasse hat einen Namespace, der von einem Dictionary-Objekt implementiert wird. Klassenattributverweise werden in Lookups übersetzt B.
übersetztC.x
wird inC.__dict__["x"]
Sie können auch etwas Ähnliches für benutzerdefinierte Objekte erzwingen:
%Vor%Im Allgemeinen sollten Sie Felder von Objekten, die Sie nicht verwenden sollen, nicht festlegen oder ändern. Die Dokumentation des spezifischen Datentyps sollte darauf verweisen, welche Felder für die public -Modifikation verfügbar sind.
Zum Beispiel ein ReadOnlyPoint
-Objekt, bei dem die x- und y-Koordinaten nur für die Objektkonstruktion festgelegt sind:
Während die Eigenschaften x
und y
schreibgeschützt sind, können Sie beim Zugriff auf die Objekt-Interna den Status des Objekts ändern.
Die Möglichkeit, einem str
-Objekt ein neues Feld hinzuzufügen, ist ein Implementierungsdetail, das für die von Ihnen verwendete Python-Version spezifisch ist.
Tags und Links python