gpt4 book ai didi

python - 什么行为是首选? (嵌入 Python)

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:09 25 4
gpt4 key购买 nike

我正在将 Python 嵌入到应用程序中。 MyClass.namestr 类型的属性:

>>> foo = MyClass()
>>> foo.name
'Default Name'

我应该允许用户这样做吗:

>>> foo.name = 123
>>> foo.name
'123'

还是不行?

>>> foo.name = 123
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: name must be a string

最佳答案

绝对引发 TypeError 而不是尝试自动强制。通常我会保守地说某事是不是“pythonic”——它是那些真正只是意味着“演讲者认为这很好”的词之一——但如果它有任何意义,它必须引用 adhering to the Zen of Python ,在这种情况下,它是格言 12:“面对歧义,拒绝猜测的诱惑。”

现在,您只是在查看整数,但是 float 或 Decimal 呢? s,或 Fraction秒?您使用的是 str 还是 repr 值?如果您有 Decimal 实例,正确的字符串值是“Decimal('10')”还是“10”?元组、列表、字符串、字节、数组、字典和 Python 中的所有其他内置类型呢?您还不知道,并且因为它们是尚未编写的程序的一部分而永远无法知道的用户定义类型呢?

您的库不太可能特别到具有奇怪的、自动的行为,这些行为会使习惯了 Python 约定的人感到困惑。 (格言 8:“特殊情况不足以打破规则。”)但是,如果这真的提高了您的库的可用性,并且您会觉得您可以轻松地回答所有这些问题用户可能分配的任意类型,然后继续进行魔法强制。 (格言 9:“尽管实用胜过纯粹。”)但它确实是一个非常罕见的库,它确实需要这种行为,如果你这样做了,请记录下来,这样当它做了一些令人惊讶的事情时,你的用户(或者甚至可能只是你自己!)可以返回并阅读具体规则。

关于python - 什么行为是首选? (嵌入 Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com