我想在 Python中比较两个datetime.date类型,但我不断收到类型错误:
from datetime import date class Vacancy(object): def __init__(self,date): #date is a datetime string of format 2017-13-03T00.00.000Z self.date = datetime.strptime(date[:-1],'%Y-%m-%dT%H:%M:%s.%f').date() def getDate(self): return self.dateall_objects = [o1,o2,o3,o4,...] #contains objects of type Vacancyfor o in all_objects: earlIEstDate = date(2020,1,1) if o.getDate() < earlIEstDate: earlIEstDate = o.getDate()print(earlIEstDate)
TypeError:’<' 'datetime.date'和'method'的实例之间不支持 这对我没有意义,因为:
print(type(earlIEstDate))和print(type(o.getDate()))都给出
< class'datetime.date'>
我能做错什么?
编辑:为all_objects中的对象添加了类示例代码
EDIT2:正如你们许多人所指出的那样,确实缺少'()’.在我的实际代码中,我通过执行earlIEstDate = o.getDate来分配值的方法instad.下次我会尝试对我的代码更加真实.感谢大家提供的见解,因为我确实来自Java,但我还没有完全理解Python.
解决方法 TypeError应该为您提供解决此问题所需的所有信息.以下是解释它的方法:TypeError: '<' not supported between instances of 'datetime.date' and 'method'
>’<'不支持意味着您在使用<时遇到错误运算符,你已经知道了.
>比较不起作用,因为您要比较的事情之一不是datetime.date实例.你也已经有了这个.
>如果您使用o.getDate而不是o.getDate(),那么您将获得方法类型.在Python中,您可以根据需要传递方法作为值,就像lambdas或函数一样.但是,在这种情况下,这不是您想要的,因此请确保在想要调用方法的任何地方使用(),即使它不接受任何参数.
>错误消息中类型的顺序也很有趣. datetime.date出现在方法之前意味着日期在左侧,有问题的值在右侧.在您的情况下,earlIEstDate持有方法而不是datetime.date.
>现在我们知道最早的日期是问题,它在哪里更新? earlIEstDate = date(2020,1)显然是一个日期,但是earlIEstDate = o.getDate()怎么样?它使用括号,因此o.getDate()必须返回一个方法.
>鉴于您的代码,Vacancy将始终将self.date设置为日期,否则将抛出异常(类似于ValueError:时间数据’xxx’与格式’%Y-%m-%dT%H不匹配: %M:%S%F’).我猜你的代码看起来不一样,并且Vacancy的初始化在某种程度上是错误的.这是提供MCVE的好处:)
以上是内存溢出为你收集整理的比较Python中的两个日期对象:TypeError:’datetime.date’和’method’实例之间不支持’<'全部内容,希望文章能够帮你解决比较Python中的两个日期对象:TypeError:’datetime.date’和’method’实例之间不支持’<'所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)