J'ai défini une classe Vector
qui a trois variables de propriétés: x
, y
et z
. Les coordonnées doivent être des nombres réels, mais il n'y a rien pour arrêter un de faire ce qui suit:Type de sécurité en Python
>>> v = Vector(8, 7.3, -1)
>>> v.x = "foo"
>>> v.x
"foo"
je pourrais mettre en œuvre la « sécurité de type » comme celui-ci:
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
... mais cela semble ONU- Pythonique.
Suggestions?
Mais pourquoi? Les entiers fonctionnent totalement. –
Je comprends ce genre de préoccupations viennent généralement avec de grands projets/équipe. Si la sécurité des types est quelque chose que vous ressentez fortement alors je suggère que vous jetez un oeil à la place. – BlueSky