he definido una clase Vector
que tiene tres variables de las propiedades: x
, y
y z
. Coordenadas tienen que ser números reales, pero no hay nada que impida que uno haga lo siguiente:Seguridad de tipos en Python
>>> v = Vector(8, 7.3, -1)
>>> v.x = "foo"
>>> v.x
"foo"
pude poner en práctica "la seguridad de tipos" de esta manera:
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
... pero que parece in- Pythonic.
Sugerencias?
¿Pero por qué? Los enteros funcionan totalmente. –
Entiendo que este tipo de inquietudes suelen venir con grandes proyectos/equipo. Si la seguridad de tipo es algo que te atrae mucho, te sugiero que eches un vistazo a Scala. – BlueSky