Как насчет
my_iterable = str
это проходит ваш тест.
Если говорить серьезно, Iterable
в модуле коллекций обеспечивает:
def __iter__(self):
while False:
yield None
Это можно считать «наиболее питоническим», потому что это то, что использует сам Python.
Обратите внимание, что технически все ответы до сих пор предоставляют итераторов (__iter__
+ next
), а не итераций (просто __iter__
).
Эта проблема стоила мне пары часов. Я решил это, добавив Microsoft.WindowsCE.Forms.dll в GAC с помощью gacutil. Надеюсь, это поможет. Робин
Да, это вполне ожидаемо. Поскольку это статическое свойство (с которым я бы не согласился в первую очередь), разработчик должен инициализировать его, что означает загрузку Microsoft.WindowsCE.Forms, что означает загрузку точек входа для конкретных устройств. По общему признанию, сообщение об ошибке - отстой, но тогда у конструктора, поддерживающего устройства, есть много забавных проблем , причины которых трудно предугадать.
Я бы попробовал переместить его в другой класс или обернуть его с проверкой, если вы в дизайнере. У нас работает что-то вроде этого:
protected bool IsDesignTime
{
get
{
// Determine if this instance is running against .NET Framework
// by using the MSCoreLib PublicKeyToken
System.Reflection.Assembly mscorlibAssembly = typeof(int).Assembly;
if ((mscorlibAssembly != null))
{
if (mscorlibAssembly.FullName.ToUpper().EndsWith("B77A5C561934E089"))
{
return true;
}
}
return false;
}
}
Если вы скопируете Microsoft.WindowsCE.Forms.dll в подпапку вашего проекта, например, а затем добавите следующее к событиям перед сборкой вашего проекта, он также будет работать просто хорошо, если вы, например. переустановите свой компьютер:
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /i "$(ProjectDir)SubFolder\Microsoft.WindowsCE.Forms.dll"