如何使对象可以从它的类中的任何地方访问

时间:2014-12-16 21:53:46

标签: python init

作为一般策略,是否有一种方法可以在执行代码时将对象添加到 init ,而无需进行初始化。例如,而不是:

class Test:
    def __init__(self):
        self.a = False
        self.b = False

    def set_values(self, in_boolean):
        if in_boolean:
            self.a = True
        else:
            self.b = True

这样做:

class Test:
    def __init__(self):
        self.a = False

    def set_values(self, in_boolean):
        if in_boolean:
            self.a = True
        else:
            self.b = True
            # This object is only created if this condition is
            # met. Otherwise, this is not created in __init__.

如果想要在那里保存对象,是否需要初始化__init__中的所有对象?

如果这不可能,那么创建在类方法中创建的全局对象的替代方法是什么?

我想解释一下我希望使用它的方案,以便更好地说明问题:

假设我在一个类中执行一个方法。根据某些条件,可能会或可能不会在该类中生成我希望能够从类中的所有其他方法访问的对象。由于可能会创建或不创建该对象,因此我不希望在__init__中对其进行初始化。

总结一下:如果我想要保存'我班上的一个对象,是否需要在__init__初始化它?

修改

好吧我的问题是我相信一个人只创造了自我。" init 中的对象。正如我现在所理解的那样,人们可以做出自我。"对象中的任何对象,而不仅仅是 init 。这将使所述对象可以从类中的任何其他位置访问,这最终是我在这里寻找的。也许问题应该是:

如何让对象可以从它的任何地方访问?

1 个答案:

答案 0 :(得分:4)

在Python中,在使用变量之前,您无需“声明”变量。如果您尝试访问不存在的变量,可以将其包装在try...except AttributeError中并将其称为一天。

类上的__init__就像Python上的任何其他方法一样,它不能访问其他方法所没有的任何功能。唯一的区别是它具有在您实例化类时自动调用的好处,省去了每次必须编写类似构造函数的类并手动调用它的麻烦。