为什么我不能在 Python 3.8 中使用 class numbers.Rational 中的这些有理数、分子和分母?

Why cant I use these rational, numerator & denominator from class numbers.Rational in Python 3.8?

谁能帮我理解如何使用这些有理数、分子和分母

*class numbers.Rational 子类型 Real 并添加分子和分母属性,这些属性应该是最低限度的。有了这些,它为 float() 提供了默认值。

分子 文摘.

分母 文摘.*

Here's the link to the official documentation

Here's the link to official code

numbers 模块提供了一些 抽象基础 classes,如果您正在实现自己的数字类型,则可以使用它们。您不需要使用它们,但如果您需要,它们可以帮助您把事情做好。

它们不是您可以随时访问的内置类型,它们是不同的。 Python 中的具体数字类型是 intfloatcomplex 并且,如果您愿意进入标准库,fractions.Fractiondecimal.Decimal.

在问题中显示的交互式会话中,您正在创建一个 complex 对象和一个 float(通过除以整数)。这些与 numbers.Complexnumbers.Rational 不同。虽然 numbers.Complex class 的 API 与具体 complex 类型的实际工作方式非常匹配,但 float 类型与摘要 numbers.Rational API.

如果您只想将 float 表示为分数,请尝试对其调用 as_integer_ratio() 方法。这可能不是您期望的分数!那是因为浮点值并不总是准确的,尤其是当二进制表示无限重复并且需要在某处截断时。