Python 在类和方法之间共享变量

Python 在类和方法之间共享变量,python,python-2.7,Python,Python 2.7,我是OOP语言的新手,我有一个场景,我想在两个都有方法的类之间共享一个变量。在第一类中,我有一个变量为var1的函数。我想让这个变量对我的第二类func2可用,但是我不知道如何实现这一点 class One(object): def func1(self): var1 = 'foo' class Two(object): def func2(self): # how can i get var1 here ? 如果其中一个类实际上可以是另一个类的子

我是OOP语言的新手,我有一个场景,我想在两个都有方法的类之间共享一个变量。在第一类中,我有一个变量为var1的函数。我想让这个变量对我的第二类func2可用,但是我不知道如何实现这一点

class One(object):

    def func1(self):
        var1 = 'foo'

class Two(object):

    def func2(self):
    # how can i get var1 here ?

如果其中一个类实际上可以是另一个类的子类,则可以使用继承

class One(object):

    def func1(self):
        var1 = 'foo'

class Two(One):

    # func1 already exists here.
    # So does var1
您可以使函数接受参数

class One(object):

    def func1(self):
        var1 = 'foo'

class Two(object):

    def func2(self, var):
        # Use var
或者您可以使用全局变量,但我认为如果您只是进入OOP,您希望避免这种情况

注意:让我指出,在更大的项目和程序中使用全局变量在实践中容易出现许多错误。您可以使用它,直到您有经验继续使用另一种方法为止。但最终你将不得不停止在OOP中使用它们。我建议它只是为了练习。编码时请记住这一点

编辑:在您的情况下,您可能希望使用静态类元素,例如

class One(object):
    var1 = "foonimo"
    def func1(self):
        #use var1

class Two(object):

    def func2(self, var):
        # Use as One.var1

这应该是可行的,而且比全局变量更可行。

您需要将变量传递给方法,或者其中一个类可以从另一个类继承,从而获得它的变量,但这是假设您对OOP有足够的了解,能够了解抽象类本身与实例化对象之间的区别。如图所示,变量只存在于方法的局部范围中,而不是在_init__方法中定义它。您还可以将其设置为全局变量或One和Two都使用的第三类对象的一部分。很难说是1和2,也不了解实际的数据关系。也可能您希望var1是一个实例变量而不是局部变量,例如self.var1='foo'。然后,如果func2引用了一个实例,它就可以访问它的值,尽管考虑到这个问题的抽象程度,这个实例的来源是不可能确定的。如果你让这个问题变得不那么抽象,那么你会得到更好的答案,这样就可以理解1和2之间的关系(如果有的话),如果真正的是保密的。如果OP想要重载该方法,那么第一个是没有意义的。2.你可以使用全局变量——这是我实际上不赞成的。@EliKorvigo,我建议避免,但你不能否认这是一个选项。他是个新手,因此我会更加强调这个建议。我知道的继承方法,然而,当我使用这个选项时,我使用的框架似乎并不喜欢它。全局变量可以工作。我仍在努力学习python OOP的一点是,为什么在我没有方法的情况下可以将变量传递给其他类,但当我有方法的时候,事情会变得更加复杂。例如,如果我在第二班,我可以只键入'new_var=One.var1',这应该是正确的work@bytes1234在这种情况下,让我再做一次编辑。看看是否适合你。