我有一个名为Message的主类和一个名为DDMessage的子类。当我使用以下方法创建对象DDMessage时:
m = DDMessages(row["language"])
我遇到了这个错误:
每个类的代码都是...
消息
import abc
class Message(metaclass=abc.ABCMeta):
def __init__(self, language):
self.set_message(language)
@abc.abstractmethod
def set_message(self, language):
raise NotImplementedError("Message", "set_message", None,
"El usuario no ha implementado este método")
def get_message(self):
return self.message
@abc.abstractmethod
def prepare_message(self):
raise NotImplementedError("Message", "prepare_message", None,
"El usuario no ha implementado este método")
DDMessage
from messages.message import Message
from constants import MESSAGES
from constants import LANGUAGE
class DDMessages(Message):
def __init__(self, language):
super().__init__(language)
def set_message(self, language):
if language == LANGUAGE.SPANISH:
self.set_message(MESSAGES.DD_ESP_MESSAGE)
else:
self.set_message(MESSAGES.DD_ENG_MESSAGE)
def prepare_message(self):
pass
我在做什么错?我正在使用python 3。
答案 0 :(得分:2)
问题是set_message()
自称。这就是递归的意思。我认为递归在这里不合适。相反,您应该设置实例的消息字段:
def set_message(self, language):
if language == LANGUAGE.SPANISH:
self.message = MESSAGES.DD_ESP_MESSAGE
else:
self.message = MESSAGES.DD_ENG_MESSAGE
不过,这只是一个猜测。如果这不是您想要的,则需要离开计算机,然后确定要做什么。如果您需要进一步的帮助,请随时提出一个新问题,以更详细地描述您要做什么。