Python与LINQ of type的等价物是什么<;T>;()(在.NET中)
我试图在Python与LINQ of type的等价物是什么<;T>;()(在.NET中),python,linq,casting,equivalent,Python,Linq,Casting,Equivalent,我试图在logger.handlers集合中获取特定自定义类型的单个处理程序 对于.NET,我只需使用以下LINQ扩展,它过滤元素并仅返回类型为MemoryListHandler的元素: logger.handlers.OfType<MemoryListHandler>().SingleOrDefault() Python是动态类型的,因此您可能不需要转换任何内容 但是,在某些情况下,您可能仍然需要将int转换为string: map(lambda x: str(x), [1,
logger.handlers
集合中获取特定自定义类型的单个处理程序
对于.NET,我只需使用以下LINQ扩展,它过滤元素并仅返回类型为MemoryListHandler
的元素:
logger.handlers.OfType<MemoryListHandler>().SingleOrDefault()
Python是动态类型的,因此您可能不需要转换任何内容
但是,在某些情况下,您可能仍然需要将int转换为string:
map(lambda x: str(x), [1, 2, 3])
或者,如果函数只接受一个参数,只需单独传递函数:
map(str, [1, 2, 3])
更新
filter(lambda x: type(x) == YourClass, [your_array])
您可以尝试index
方法
try:
lh = logger.handlers
x = lh[lh.index(MemoryListHandler)]
except ValueError:
x = some_default_value
您不需要lambda
;只需将str
作为map
的第一个参数,如下:map(str[1,2,3])
。我的问题似乎不够清楚,我已经重新制定了一点。@Erwin Mayer,对变量使用operaor'type'或方法“\uuuuuuuuuu.class\uuuuuu”。。。您可以将其隐藏在函数或其他东西中,但没有比这更好的了。“is”用于对象标识测试,所以我认为isinstance(handler,MemoryListHandler)是合适的测试。
try:
lh = logger.handlers
x = lh[lh.index(MemoryListHandler)]
except ValueError:
x = some_default_value