В Python вызываемым является объект, который тип имеет __call__
метод:
>>> class Foo:
... pass
...
>>> class Bar(object):
... pass
...
>>> type(Foo).__call__(Foo)
<__main__.Foo instance at 0x711440>
>>> type(Bar).__call__(Bar)
<__main__.Bar object at 0x712110>
>>> def foo(bar):
... return bar
...
>>> type(foo).__call__(foo, 42)
42
Настолько простой:)
Это, конечно, может быть перегружено:
>>> class Foo(object):
... def __call__(self):
... return 42
...
>>> f = Foo()
>>> f()
42
В целях безопасности используйте префикс для всех классов в вашем приложении. Все классы загружаются в единое плоское пространство имен в Objective-C, и префикс предотвращает конфликты как сейчас, так и в будущем.
Это также включает сущности CoreData; они также должны использовать тот же префикс, что и остальные классы вашего приложения.
Также обратите внимание, что вы можете решить, что часть этого кода может быть использована где-то еще, поэтому использование префиксов сейчас защитит вас от потенциальных конфликтов в будущем.