在_init_中持有类的引用并在另一个类中调用它之间的区别

时间:2017-11-09 18:35:23

标签: python security

我目前正在开展一个安全性具有重要作用的项目,我不确定应该在项目中应用以下哪种方式。

class First():
    def some_function(self):
        print('this is a function')

class Second():
    def second_other_function(self):
        First().some_function()
        print('this is another function')

class Second():
    def __init__(self):
        self.first = First()
    def some_other_function(self):
        self.first.some_function()
        print('this is another function')

如果我不希望第二个类与第一个类相关联,那么First()类和其中一个Second()类之间的解决方案会更好,就像不访问它一样。

谢谢

1 个答案:

答案 0 :(得分:1)

两个示例之间的唯一区别是第一个示例创建First的新实例,然后转储它(每当GC决定时)。第二个保持对同一First对象的引用。

第一种方法非常浪费(每次调用Second.second_other_function时都会创建并抛弃新对象),我怀疑你真正追求的是静态方法:

class First():
    @staticmethod
    def some_function():
        print('this is a function')

class Second():
    def second_other_function(self):
        First.some_function()
        print('this is another function')

如果你甚至需要First类,那么这就引出了一个问题。