2011-10-12 81 views
2

在阿达,您可以定义自定义数据类型,如本在范围内创建自定义数字数据类型?

type Day_Of_Month is range 1 .. 31; 

所以现在你可以创建一个Day_Of_Month变量,只能容纳1到31之间的一个int这是不错的,因为我们没有在想要更新值时通过适当的异常处理继续进行条件检查。

有没有一种简单的方法来在Python中做类似的事情?

+0

封闭或封装边界检查的类是我能想到的唯一两种方法。没有像这样的语言功能。 – brc

+0

查看'datetime'模块。您可以创建和使用'datetime'对象来完成此操作。 – wberry

+1

我想我无意间把人们抛下了。这个例子只是我在网上找到的一个随机的例子。我的代码实际上是一个只能在1..10范围内的数字。由于没有简单的方法来做到这一点,我只会坚持使用条件检查。 –

回答

1

如果这个数据类型要经常使用,可能值得为它创建一个类并覆盖操作符,以使其更加无缝地工作。这样,所有的异常处理仍然是数据类型的内部处理,并且它给了你很大的灵活性来定义诸如二月和三月的天数差异或者每个月的差异等。

+0

我不明白'datetime'模块是如何实用的。 – jfs

+1

@JF:授予。我正在以更假设的方式思考。事实上,仅仅使用'datetime'模块对于列出的例子来说是最有意义的。 – garbados

0

它是一个多回答评论:

你可以使用datetime模块的日期和时间在Python工作。必要时它会提出适当的例外。

一般情况下,如果你有数据和某些你想在某些操作中保留的不变量,那么创建一个类可以让你在保持不变的情况下对数据执行这些操作。

注意:您不希望实现仅限制输入/输出操作的通用算术类:它不容易(请参阅decimal.Decimalfractions.Fraction),并且在这种情况下它不是有用的,例如,什么是正确的结果是:

day_of_month + 1 

要回答它,你应该知道月份,年份(和时区有时)。因此,您开始实施datetime模块和pytzdateutil包。

相关问题