Инверсия зависимостей: python - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть интерфейс под названием EmailService:

from zope.interface import Interface
from src.utils.Email import Email

"""
@author: 
"""
class EmailService(Interface):

    def sendMail(self, mail):
        raise NotImplementedError

и класс EmailServiceImpl, который представляет реализацию этого интерфейса:

from zope.interface import implementer
from src.services.EmailService import EmailService
from lbc.log_conf import  LoggerManager
"""
@author: 
"""
@implementer(EmailService)
class EmailServiceImpl():

        def __init__(self):
            logger = LoggerManager.__call__().get_logger()
            logger.info("Email Service Implementation")

        def sendMail(self, mail):
            print("send mail")

Я хочу, чтобы мой класс main зависел от абстракций

class main():

    def __init__(self):
        self.service = EmailService

    def sendMail(self):
        self.mail = Email("test","test","test","test")
        self.service.sendMail(self,self.mail)

но когда я пытаюсь внедрить свой интерфейс, у меня появляется эта ошибка:

AttributeError: у объекта 'InterfaceClass' нет атрибута 'sendMail'

...