Python在另一个类中使用变量

时间:2016-07-01 15:46:54

标签: python python-3.x

我是Python新手,我想知道:可能在另一个类中使用一个变量吗?

例如:

class Hello:

    def function_a(self):
        x = 1


class World:

    def function_b(self):
        print(x)


a = Hello()
b = World()
a.function_a()
b.function_b()

如何在班级之间分享“x”?

3 个答案:

答案 0 :(得分:3)

实际上,这是无法完成的。简单的选择是通过在使用它的每个函数的开头添加global x行来使x全局化。

最佳做法是避免使用全局变量并传递包含共享变量的对象:

class Hello:

    def function_a(self):
        # Stores the x variable in the current instance of Hello
        self.x = 1


class World:

    def function_b(self, a):
        print(a.x)


a = Hello()
b = World()
a.function_a()
b.function_b(a)

答案 1 :(得分:1)

如果您不想传递变量,则需要将其设为global

class Hello:
    def function_a(self):
        global x
        x = 1


class World:
    def function_b(self):
        global x
        print(x)


a = Hello()
b = World()
>>> x = 20
>>> b.function_b()
20
>>> a.function_a()
>>> b.function_b()
1
>>> 

答案 2 :(得分:1)

不是那样的。与大多数现代语言一样,Python也有范围。你可以使用全局变量,但不要养成习惯,因为它们几乎总是不好的做法。

这就是我的方式。

class Hello:
    def __init__(self, shared):
        self.shared = shared

    def function_a(self):
        self.shared['x'] = 1

class World:
    def __init__(self, shared):
        self.shared = shared

    def function_b(self):
        print(self.shared['x'])

shared = {}
a = Hello(shared)
b = World(shared)
a.function_a()
b.function_b()