Mypy знает , как обрабатывать проверки версий Python , и вы можете использовать условные псевдонимы типа , чтобы выбрать правильный тип для правильной версии Python:
if sys.version_info[0] >= 3:
TryNode = ast.Try
else:
TryNode = ast.TryFinally
class Visitor(ast.NodeVisitor):
def visit_Try(self, node): # type: (TryNode) -> None
# ...
visit_TryFinally = visit_Try # python 2 compatible
[1116 ] Вы можете дополнительно сэкономить на времени выполнения тестов if sys.version_info
, поместив этот код в тест if TYPE_CHECKING:
.
В качестве примечания: если вы обрабатываете ast.Try
в Python 3 для отслеживания компонентов finally:
и except ...:
оператора try
, вы хотите обрабатывать как ast.TryFinally
, так и ast.TryExcept
в Python. 2, как и в Python 2.5, вы можете использовать только try...finally
или try...except
в одном выражении.
Убедитесь, что у вас есть GuidAttribute в уровень сборки.
[Guid ( "")]
[ComVisible (истина)]
интерфейс IFoo
{
void DoFoo ();
}
[Guid ( "")]
[ComVisible (истина)]
[ProgId ( "ProgId.Foo")]
класс Foo: IFoo
{
public void DoFoo ()
{
}
}
В файле AssemblyInfo.cs убедитесь, что у вас есть следующее:
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(true)]
ОБНОВЛЕНИЕ:
Прочтите: Как я могу использовать объекты .NET из Excel VBA ?
Какие ссылки на: http://richnewman.wordpress.com/2007/04/15/a-beginner%E2%80%99s-guide-to-calling-a-net-library-from-excel/