Я построил (просто для удовольствия) 3 класса, чтобы помочь мне регистрировать некоторые события в моей работе.
вот они:
class logMessage:
def __init__(self,objectName,message,messageType):
self.objectName = objectName
self.message = message
self.messageType = messageType
self.dateTime = datetime.datetime.now()
def __str__(self):
return str(self.dateTime) + "\nObjeto de valor " + str(self.objectName) + " gerou uma mensagem do tipo: " + self.messageType + "\n" + self.message + "\n"
class logHandler():
def __init__(self):
self.messages = []
def __getitem__(self,index):
return self.messages[index]
def __len__(self):
return len(self.messages)
def __str__(self):
colecaoString = ""
for x in self.messages:
colecaoString += str(x) + "\n"
return colecaoString
def dumpItem(self,index):
temp = self.messages[index]
del self.messages[index]
return str(temp)
def append(self,log):
if isinstance(log,logMessage.logMessage):
self.messages.append(log)
else:
self.newLogMessage(log, "Wrong object type. Not a log message. Impossible to log.","Error")
def newLogMessage(self,objectInstance,message,messageType):
newMessage = logMessage.logMessage(objectInstance,message,messageType)
self.append(newMessage)
Вот мой вопрос:
Представьте, что у меня есть другие классы, такие как Employee, и я хочу записать событие, которое произошло ВНУТРИ этого класса.
Как я могу сделать это, не передавая экземпляр logHandler каждому другому классу, в который я хочу войти? Моя идея состояла бы в том, чтобы передать logHandler каждой init функции, а затем использовать ее внутри нее.
Как это можно сделать, не делая то, что я указал?
Как это будет работать с глобальным logHandler? Есть ли способ обнаружить во время выполнения, если в программе есть экземпляр logHandler, и использовать его для создания сообщений?
Спасибо