Tôi đã xác định lớp Vector
có ba biến thuộc tính: x
, y
và z
. Tọa phải số thực, nhưng không có gì để ngăn chặn một từ cách làm như sau là:Nhập an toàn bằng Python
>>> v = Vector(8, 7.3, -1)
>>> v.x = "foo"
>>> v.x
"foo"
tôi có thể thực hiện "an toàn kiểu" như thế này:
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
... nhưng điều đó dường un- Pythonic.
Đề xuất?
Nhưng tại sao? Số nguyên hoàn toàn hoạt động. –
Tôi hiểu loại mối quan tâm này thường xuất hiện với các dự án/nhóm lớn. Nếu typesafety là thứ bạn cảm thấy mạnh mẽ thì tôi khuyên bạn nên xem xét scala thay thế. – BlueSky