class InterfaceBase(object):
@staticmethod
def create(*args): raise NotImplementedError
from interfacebase import InterfaceBase
from implementation import CImplementation # импортим имплементацию что бы (см. ниже)
# с этим инклюдом у нас и открывается кольцо
class IInterface(InterfaceBase):
def create(*args): return CImplementation() # через статик интерфейса её можно было создать
def method(self): raise NotImplementedError
# class IInterface(): pass # forward declaration не работает :(
from interface import IInterface # в таком случаи импортим (тут то и замыкается кольцо)
class CImplementation(IInterface): #Наследуемся от интерфейса для полиморфизма метода method
def method(self): print("CClass::method()")
Traceback (most recent call last):
File "main.py", line 1, in <module>
from interface import IInterface
File "/api/interface.py", line 2, in <module>
from implementation import CImplementation
File "/src/implementation.py", line 1, in <module>
from interface import IInterface
ImportError: cannot import name 'IInterface'
class IInterface(): pass
cmake -G "MinGW Makefiles
- генерирует все без проблем. Тогда ещё больше вопросов :)