gpt4 book ai didi

python - 我应该如何检查给定的参数是 datetime.date 对象?

转载 作者:IT老高 更新时间:2023-10-28 21:16:16 25 4
gpt4 key购买 nike

我目前正在使用带有 isinstanceassert 语句。因为datetimedate 的子类,所以我还需要检查它是否不是datetime 的实例。肯定有更好的方法吗?

from datetime import date, datetime

def some_func(arg):
assert isinstance(arg, date) and not isinstance(arg, datetime),\
'arg must be a datetime.date object'
# ...

最佳答案

我不明白你拒绝子类实例的动机(因为根据定义,它们支持父类(super class)支持的所有行为!),但如果这真的是你坚持做的事情,那么:

if type(arg) is not datetime.date:
raise TypeError('arg must be a datetime.date, not a %s' % type(arg))

不要使用 assert 除了在开发期间进行健全性检查(当你使用 python -o 运行时它会变成无操作),并且不要引发错误类型的异常(例如,AssertionErrorTypeError 显然是您在这里的意思)。

使用 isinstance 然后排除一个特定的子类并不是获得排除子类的严格指定的确切类型的好方法:毕竟,用户可能会很好地继承 datetime.date 并添加您要避免的任何内容,具体方法是拒绝 datetime.datetime 的实例!-)

关于python - 我应该如何检查给定的参数是 datetime.date 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2762265/

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