Erstens, wenn ich nach Einheiten frage, meine ich Maßeinheiten wie Zoll, Fuß, Pixel, Zellen. Ich beziehe mich nicht auf Datentypen wie int und float.Python-Konvention für Variablennamen zur Anzeige von Einheiten
Wikipedia bezeichnet dies als logische Datentyp statt physischen Datentyp.
Ich würde gerne die beste Möglichkeit, Variablen zu benennen, kennen.
Hier ist ein Code, durch zu gehen, was ich frage:
board_length=8 #in inches
board_length=8*12 #Convert from feet to inches
Beachten Sie, dass diese beide ganze Zahlen sind (oder schwimmt, ist mir egal), aber ich habe Einheiten verändert. Ich habe auch den Variablennamen beibehalten. Ich könnte eine Konvention aufstellen, und das ist der Zweck dieser Frage. Ohne Anleitung könnte ich so etwas tun:
board_length=8
board_length_inches=8*12
Ich würde dies eine Ad-hoc-Art der Dinge zu tun. Oder ich könnte eine Konvention etablieren:
Fboard_length=8
Iboard_length=8*12
Oder andere Varianten, die ich ebenso nicht mag. Wie kann ich Variablen in einer beschreibenden Weise benennen, aber so nah wie möglich an PEP-08 bleiben?
Nur um so klar, wie ich kann, können die Variablen verschiedene Datentypen haben, aber die Einheiten wären der gleiche (Zoll würde die gleiche Namensgebung hat, unabhängig davon, ob sie als und integer oder float gespeichert wurden)
Je nachdem, wie wichtig die Einheiten für Ihr Skript sind, könnten Sie in Betracht ziehen, Unterklassen basierend auf jeder Einheit zu erstellen. Jede "Maßeinheit" (Länge, Gewicht usw.) hätte ihre On-Klasse, die die eingebauten Typen erbt, und hat ihre eigenen Unterklassen für die einzelnen Einheiten. Diese Einheiten hätten dann Methoden zur Umwandlung in alle anderen Einheiten des gleichen Typs.Dies wäre eine Menge Arbeit, so dass Sie fragen müssen, ob es wirklich wert ist – wnnmaw
Oder Sie könnten die Builtins dekorieren, um ein Attribut oder eine Methode zu haben, die Einheiten überwacht – wnnmaw
Ich würde mir darüber nicht zu viele Sorgen machen. Ich kann mir keine Fälle vorstellen, in denen Sie denselben Wert für längere Zeit in verschiedenen Einheiten speichern müssten. Ich würde das einfach tun - "board_length = 24 # in inches" (mehrere Zeilen später) 'print (to_feet (board_length))' oder 'FEET = 12; print (board_length * FEET) '. – rlms