gpt4 book ai didi

python - 如果它不是函数,则将项目添加到列表中

转载 作者:太空狗 更新时间:2023-10-30 00:06:49 26 4
gpt4 key购买 nike

我现在正在尝试编写一个函数,其目的是遍历对象的 __dict__ 并在项不是函数的情况下将项添加到字典中。这是我的代码:

def dict_into_list(self):
result = {}
for each_key,each_item in self.__dict__.items():
if inspect.isfunction(each_key):
continue
else:
result[each_key] = each_item
return result

如果我没记错的话,inspect.isfunction 应该也将 lambda 识别为函数,对吗?但是,如果我写

c = some_object(3)
c.whatever = lambda x : x*3

然后我的函数仍然包含 lambda。有人可以解释这是为什么吗?

例如,如果我有这样一个类:

class WhateverObject:
def __init__(self,value):
self._value = value
def blahblah(self):
print('hello')
a = WhateverObject(5)

所以如果我说 print(a.__dict__),它应该返回 {_value:5}

最佳答案

您实际上是在检查 each_key 是否是一个函数,但很可能不是。你实际上必须检查这个值,就像这样

if inspect.isfunction(each_item):

你可以通过包含一个 print 来确认这一点,就像这样

def dict_into_list(self):
result = {}
for each_key, each_item in self.__dict__.items():
print(type(each_key), type(each_item))
if inspect.isfunction(each_item) == False:
result[each_key] = each_item
return result

此外,您还可以像这样使用字典推导式编写代码

def dict_into_list(self):
return {key: value for key, value in self.__dict__.items()
if not inspect.isfunction(value)}

关于python - 如果它不是函数,则将项目添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689289/

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