Geben Sicherheit in Python

Habe ich definiert Vector Klasse, die Eigenschaft hat drei Variablen: x, y und z. Koordinaten zu den realen zahlen, aber es gibt nichts zu stoppen zu tun, die folgenden:

>>> v = Vector(8, 7.3, -1)
>>> v.x = "foo"
>>> v.x
"foo"

Konnte ich umsetzen "Art Sicherheit" wie folgt:

import numbers

class Vector:
    def __init__(self, x, y, z):
        self.setposition(x, y, z)

    def setposition(self, x, y, z):
        for i in (x, y, z):
            if not isinstance(i, numbers.Real):
                raise TypeError("Real coordinates only")

        self.__x = x
        self.__y = y
        self.__z = z

    @property
    def x(self):
        return self.__x

    @property
    def y(self):
        return self.__y

    @property
    def z(self):
        return self.__z

...aber das scheint un-Pythonic.

Vorschläge?

  • Aber warum? Ganzzahlen arbeitet Total.
  • Ich verstehe diese Art von Anliegen kommen in der Regel mit großen Projekten/Teams. Wenn typesafety ist etwas, was Sie fühlen sich stark über, dann schlage ich vor, Sie haben einen Blick auf scala statt.
InformationsquelleAutor | 2010-09-20
Schreibe einen Kommentar