我是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”?
答案 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()