gpt4 book ai didi

python - 如何将类 更改为 Python 类型

转载 作者:行者123 更新时间:2023-12-01 06:26:47 26 4
gpt4 key购买 nike

我是 OOP 新手,所以这可能是一种反模式,但是,我有一个类:

class SomeObject:

""" WIP OBJECT """

parsed_dates = []

def __init__(self, description, weekdays, months):
self.description = str(description)
self.weekdays = frozenset(SomeObject.flatn(weekdays)) # flat set of ints
self.months = frozenset(SomeObject.flatn(months)) # flat set of ints


def __repr__(self):
return self.description

( ... )

def accepts(self, dt):
return any([
dt.weekday() in self.weekdays,
dt.month in self.months,
])

我构建了一个默认字典:

def main(dt_start, dt_end, s: str):
d = defaultdict(list)
description = pull_desc(s=s)
active_days = convert_tuples_to_numpy_array(description, np.str)
SomeObject.active_days(active_days_for_meter)
for test_set in SomeObject.parsed_dates:
for dt in [dt for dt in SomeObject.date_range(dt_start, dt_end) if test_set.accepts(dt)]:
# add the datetime objects to a list of values with the description as the key
d[test_set].append(str(dt.isoformat()))
return d

返回:

defaultdict(<class 'list'>, {['Saturdays']: ['2020-01-04', '2020-01-11', '2020-01-18']}

现在,当我去比较这个 defaultdict() 的键(类似于列表)时,Python 无法将该键识别为其类型 '__main__.SomeObject'>而不是输入 list

即:

dic = {"Saturday": 1}

for k1, v2 in dic.items()
for k2, v2 in defaultdict.items():
if k1 == k2:
print("Chicken Wing")

鸡翅永远不会打印,因为 type(k1) = <str>type(k2) = '<__main__.SomeObject'>

我该如何解决这个问题?我对 OOP 到底有什么误解?我应该阅读哪些概念来帮助我理解?

感谢所有信息,谢谢

最佳答案

所以,事实证明test_setSomeObject 的一个实例这就是为什么type(k2) = '<__main__.SomeObject'> .

看来您缺少的是:

d[str(test_set)].append(str(dt.isoformat()))

然后是你的__repr__()方法将启动。

更新:

原因是main()返回defaultdict(<class 'list'>, {'Saturdays': ['2020-01-04', '2020-01-11', '2020-01-18']}是你有一个 __repr__()方法和defaultdict正在调用str()在字典的每个键上。

关于python - 如何将类 <type> 更改为 Python 类型 <list>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60100723/

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