我在我的所有程序中都有一个类的实例(假设没有并发问题)。
最好有这样的事情:
def main():
usefulClass = usefulClass()
self.a = A(usefulClass)
self.b = B(usefulClass)
class A/B:
def __init__(self, usefulClass):
self.usefulClass = usefulClass
def method(self):
self.usefulClass.whatever()
if __name__ == "__main__":
main()
或者像这样:
usefulClass = usefulClass()
def main():
self.a = A()
self.b = B()
class A/B:
def __init__(self):
pass
def method(self):
usefulClass.whatever()
if __name__ == "__main__":
main()
答案 0 :(得分:2)
第一个更好,因为它避免使用全局变量 - global variables can cause tons of headaches later on。
例如,如果您在其他模块中意外修改了usefulClass
该怎么办?很难找出出错的原因和原因。
答案 1 :(得分:2)
这取决于代码的大小。在你的小例子中,第一个解决方案肯定更好。因为全局变量基本上都是地狱。
但是,假设您只需要一次的对象是来自配置文件的数据,并且数百个其他对象可能会查询它。您不希望将配置对象传递给程序中的每个对象,也不想解析数百次配置。在这些情况下,配置被制作成Singleton。
说实话,Singleton是一个名字很好的全局变量。但如果你的程序太大,这是一个必要的恶魔 - 第一个解决方案会导致更多的问题,而不是它解决的问题。
所以,对于这个问题没有绝对的答案,所有这些都与模型化,大小和背景有关。