Python 是否在范围内创建自定义数字数据类型?

Python 是否在范围内创建自定义数字数据类型?,python,types,Python,Types,在Ada中,您可以定义这样的自定义数据类型 type Day_Of_Month is range 1 .. 31; 因此,现在您可以创建一个Day\u Of_Month变量,该变量只能保存1到31之间的整数。这很好,因为我们不必在想要更新值时一直进行条件检查,并进行适当的异常处理 在Python中有没有一种简单的方法来做类似的事情?如果这个数据类型要经常使用,那么为它创建一个类并覆盖操作符可能是值得的,这样它才能更无缝地工作。这样,所有的异常处理仍然是数据类型内部的,它为您提供了足够的灵活性来

在Ada中,您可以定义这样的自定义数据类型

type Day_Of_Month is range 1 .. 31;
因此,现在您可以创建一个
Day\u Of_Month
变量,该变量只能保存1到31之间的整数。这很好,因为我们不必在想要更新值时一直进行条件检查,并进行适当的异常处理


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

如果这个数据类型要经常使用,那么为它创建一个类并覆盖操作符可能是值得的,这样它才能更无缝地工作。这样,所有的异常处理仍然是数据类型内部的,它为您提供了足够的灵活性来定义诸如2月和3月天数的差异,或从一个月移动到另一个月等内容。

这与其说是一个答案,不如说是一个注释:

您可以使用
datetime
模块在Python中处理日期和时间。它将在必要时提出适当的例外情况

一般来说,如果您有数据和一些在使用该数据执行某些操作期间希望保留的不变量,那么创建一个类是合适的,该类允许您在保持不变量的同时对数据执行这些操作

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

day_of_month + 1

要回答这个问题,你应该知道月份、年份(有时还有时区)。因此,您开始实现
datetime
模块和
pytz
dateutil
包。

闭包或封装边界检查的类是我能想到的唯一两种方法。没有类似的语言功能。请查看
datetime
模块。你可以创建并使用
datetime
对象来完成这项任务。我想我不小心把人甩了。这个例子是我在网上随机找到的。我的代码实际上是一个只能在1到10之间的数字。既然没有一个简单的方法可以做到这一点,我就坚持使用条件检查。我不认为重新实现
datetime
模块会有什么用处。@JF:当然。我在用一种更为假想的方式思考。事实上,仅使用
datetime
模块对所列示例最有意义。