Я хотел бы получить ваши идеи о том, как реализовать хороший код для родительских и дочерних классов, которые должны быть зарегистрированы.
Моя проблема в том, что мне нужно регистрировать атрибуты родительского и дочернего экземпляра при создании, значит, внутри init -функции. Создание дочернего экземпляра также приводит к тому, что его родительский класс регистрирует сообщение. Можно ли регистрировать сообщение только из родительского экземпляра, если он не вызван из дочернего экземпляра?
Это простой пример моей проблемы, заранее спасибо ...
import logging
from uuid import uuid4
logging.basicConfig(format='%(name)s %(levelname)-7s:%(message)s', level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug("here")
class A:
init_log_message = "Instance of P"
def __init__(self):
self.id = uuid4()
# logger = logging.getLogger(__name__)
logger.error(f"{A.init_log_message}")
class B(A):
init_log_message = "Instance of C"
def __init__(self):
self.id = uuid4()
super().__init__()
# logger = logging.getLogger(__name__)
logger.warning(f"{B.init_log_message}")
b = B()
Вывод на консоль выглядит следующим образом:
__main__ DEBUG :here
__main__ ERROR :Instance of P
__main__ WARNING:Instance of C
Сообщение в средней части приходит от родительского класса через команду super (), которую я предполагаю. Как можно избежать этого сообщения?
Спасибо за любую идею или комментарий ...