我知道类属性是共享的,可以被同一个类中包含的所有函数访问,但我的问题是关于类中函数的变量呢?
我正在尝试创建一个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如何处理同一类中包含的不同函数中的变量?我想他们会被分享,但我不知道。
答案 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__
(构造函数)本身中创建实例变量,这样您就不必担心函数调用。