Передавать экземпляры классов другим классам (или использовать глобальные классы) в Python - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть несколько глобальных классов, что означает, что я использую их в любом другом классе.

На самом деле я делаю что-то вроде этого:

class Log():
    def __init__(self):
        self.logs = []

    def log(self, msg):
        self.logs.append(msg)

class A():
    def __init__(self, logger):
        self.logger = logger

class B():
    def __init__(self, logger):
        self.logger = logger

class MyMain():
    def __init__(self):
        self.logger = Log()
        self.a = A(self.logger)
        self.b = B(self.logger)

Интересно, есть ли более элегантный способ использовать такие классы во всех подмодулях? Я много искал решения этой проблемы, но я не уверен в ответах. Есть ли лучшая практика в этом ..?

Спасибо, Toni.

1 Ответ

0 голосов
/ 06 ноября 2018

спасибо за ваши ответы.

Ваш ответ, касающийся global var, привел меня к следующему результату. Я буду использовать его как встроенный класс, потому что он будет использоваться внутри нескольких модулей.

Так что это будет работать для меня:

class Log():
    def __init__(self):
        self.logs = []

    def log(self, msg):
        self.logs.append(msg)

class A():
    def __init__(self):
        sc.log("test")

class MyMain():
    def __init__(self):
        builtins.sc = Log()
        self.a = A()

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...