Существует метод для итерации только собственных свойств объекта, не считая его прототипов:
for (var i in array) if (array.hasOwnProperty(i)) {
// do something with array[i]
}
, но он все равно будет перебирать настраиваемые свойства.
В javascript any пользовательское свойство может быть назначено любому объекту, включая массив.
Если требуется итерация по разреженному массиву, следует использовать for (var i = 0; i < array.length; i++) if (i in array)
или array.forEach
с es5shim
.
Ввод импорта в конце ваших a.py и b.py должен исправлять проблемы. Если это не поможет вам переместить импорт в блок определения класса, замените
from .a import TestA
Class TestB(object):
pass
на
Class TestB(object):
from .a import TestA
pass
. Небольшое предложение: не используйте относительный импорт.
Существует несколько подходов, которые вы можете использовать для решения проблемы перекрестного импорта:
from module import foo
на import module
и использовать полные имена. См. также Циркулярный импорт в Python .