在Python中将类实例传递给其他类(或使用全局类)

时间:2018-11-06 09:22:08

标签: python python-3.x class design-patterns

我有一些全局类,这意味着我可以在其他任何类上使用它们。

实际上我是这样的:

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)

我想知道在所有子模块上是否有一种更优雅的方法来使用类似的类。.我在这个问题上进行了大量搜索,但是我对答案感到困惑。 对此有最佳实践吗??

谢谢, 托尼。

1 个答案:

答案 0 :(得分:0)

感谢您的回答。

您关于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()

谢谢。