Используйте powerset
из more_itertools
:
>>> import more_itertools
>>> ["".join(p) for p in list(more_itertools.powerset("ab"))]
['', 'a', 'b', 'ab']
Это powerset
- это функция удобства, непосредственно реализованная с помощью функции itertools
рецепты .
Вы нашли лучший способ сделать это:
event.result.attribute("Error").length() > 0
attribute
метод является предпочтительным способом получить атрибуты, если Вы не знаете, там ли они или нет.
Мне нравится этот метод потому что a.) это крайне просто и b.) Эли Greenfield использует его.;)
if("@property" in node){//do something}
Можно проверить это следующим образом:
if (undefined == event.result.@Error)
или динамично
if (undefined == event.result.@[attributeName])
Обратите внимание, что в Вашем примере, две точки получат всех потомков на всех уровнях, таким образом, Вы получите список в результате. Если не будет никаких Ошибочных атрибутов, то Вы получите пустой список. Вот почему это никогда не будет равняться пустому указателю.
Я выяснил решение, мне все еще интересно, если существует лучший способ сделать это...
Это будет работать:
private function callback(event:ResultEvent):void {
if(event.result.attribute("Error").length()) {
// error attr present
}
else {
// error attr not present
}
}
Принятие этого в примере event.result
XML
возразите содержанию, из которого точно, когда Вы отправили, это должно работать (вследствие того, что тег Проверки является корневым тегом XML):
var error:String = event.result.@Error;
if (error != "")
// error
else
// no error
Вышеупомянутый пример предположит что существующее Error
атрибут с пустым значением нужно рассматривать как случай "без ошибок", тем не менее, поэтому, если Вы хотите знать, существует ли атрибут на самом деле или нет, необходимо сделать это:
if (event.result.hasOwnProperty("@Error"))
// error
else
// no error