Инстанциация не требует определения типа. Методы, вызываемые одинаково, назначают делегатов напрямую. Предыдущий ответ абсолютно верен, вам понадобится lot больше контекста, чтобы "преобразовать" приложение C # в Python; это больше, чем просто синтаксис.
foo = Portal("Foo")
bar = Agent("bar")
foo.Connect("ip", 1234)
foo.Add(bar)
bar.Ready = bar_Ready
def bar_Ready(sender, msg):
print msg.body