我必须确保序列是同质的,即仅包含相似类型的对象。因此,我添加了一个类似assert all(isinstance(obj, type(my_list[0])) for obj in my_list[1:])
的断言,但这并不完美,但足以满足我的需求。不幸的是,这在与unittest.mock.Mock
一起使用时会引起问题:
import unittest.mock as utm
class C:
pass
my_list = [utm.Mock(spec_set=C), utm.Mock(spec_set=C)]
all(isinstance(obj, type(my_list[0])) for obj in my_list[1:])
>>>
False
特别是,两个模拟具有不同的类型,即使它们具有相同的spec_set
:
isinstance(utm.Mock(spec_set=C), type(utm.Mock(spec_set=C)))
>>>
False
是否有任何方法可以配置模拟,因此它们被视为相同类型?只要不特定于模拟,也可以选择修改支票。
如果感兴趣的话:我使用的是Python 3.5。
答案 0 :(得分:0)
为什么不这样做?
df1[, End_Time := shift(Start_Time, type = "lead", fill = last(Start_Time))]
# add sum of bbb to table 1 from table 2
df1[, No_Visitors_in_range := df2[df1, on=.(hit_time_gmt >= Start_Time, hit_time_gmt < End_Time), sum(visitor_id), by=.EACHI]$V1]