类中的函数中的变量是否在Python中该类中包含的所有其他函数之间共享?

时间:2015-01-11 15:43:26

标签: python function variables namespaces scope

我知道类属性是共享的,可以被同一个类中包含的所有函数访问,但我的问题是关于类中函数的变量呢?

我正在尝试创建一个GUI,而我的课程只由函数组成。

class Application():

    def func_a(self):
        self.x = Entry(text="My entry text")

    def func_b(self):
        self.x.config(width=100)

这可以吗?第一个函数中的self.x变量是否会被func_b引用,如果它们属于同一个类? Python如何处理同一类中包含的不同函数中的变量?我想他们会被分享,但我不知道。

1 个答案:

答案 0 :(得分:2)

  

这可以吗?如果第一个函数中的self.x变量属于同一个类,它们是否会被func_b引用?

绝对。但由于变量x仅在func_a中创建,因此应在调用func_b之前调用它。否则你会收到错误。

  

Python如何处理同一类中包含的不同函数中的变量?我想他们会被分享

由于实例变量特定于它们所定义的实例,因此它们可用于类中的所有方法。在你的情况下,当你做

self.x = ...

您实际上是在x引用的当前实例中创建名为self的属性。因此,如果您使用相同的实例调用func_b,它将正常工作。例如,

# Create an instance
app = Application()

# Call `func_a` to create `x` in `app`
app.func_a()

# Check if it is present
print(app.x)

# Call `func_b` and now it should not fail
app.func_b()

编辑:正如Gabriel在评论中提到的那样,尝试在__init__(构造函数)本身中创建实例变量,这样您就不必担心函数调用。