Python中的类包含了函数,函数中可以有变量。这些变量有不同的作用域和可访问性。本文将对Python类中函数的变量做详细讲解。
局部变量
局部变量就是定义在函数中的变量,只在函数内部可用。当函数完成后,局部变量的值将被销毁。可以使用关键字local
来声明局部变量,如下所示:
class MyClass:
def my_function(self):
local_var = "Hello, World!"
print(local_var)
可以看到在函数my_function()
中定义了local_var
变量,并用print()
函数输出它。
这段代码中,local_var
变量只在函数my_function()
内部可用。可以通过在函数内部访问它,验证这一点:
my_class = MyClass()
my_class.my_function() # 输出 "Hello, World!"
print(my_class.local_var) # 报错:AttributeError: 'MyClass' object has no attribute 'local_var'
由于local_var
变量的作用域限制在函数内部,因此在函数外部访问它将会抛出AttributeError
异常。
实例变量
实例变量是属于每个类实例的变量。可以在类函数的任意位置定义实例变量,这些变量可以在整个实例的生命周期中使用。实例变量可以通过self
关键字定义和访问。如下所示:
class MyClass:
def my_function(self):
self.instance_var = "Hello, World!"
print(self.instance_var)
def another_function(self):
print(self.instance_var)
从上面代码中可以看到,在my_function()
函数中定义了实例变量instance_var
。这个变量可以在函数的任何地方被访问。在another_function()
函数中也可以通过self.instance_var
来访问。
my_class = MyClass()
my_class.my_function() # 输出 "Hello, World!"
my_class.another_function() # 输出 "Hello, World!"
从上面代码可以看到,实例变量在类实例的整个生命周期中都是可用的。当my_function()
被调用时,instance_var
被设置为Hello, World!
。即使在函数调用之后,实例变量仍然保持存在,可以通过其他函数访问它。
类变量
类变量与实例变量不同,是属于类而不是类实例的变量。可以在所有的示例中共享。类变量可以在类外部或任何类函数中定义和访问。如下所示:
class MyClass:
class_var = "Hello, World!"
def my_function(self):
print(MyClass.class_var)
def another_function(self):
print(MyClass.class_var)
在上面的代码中,定义了一个名为class_var
的类变量。可以在MyClass
的任何函数中访问它。在类函数中,可以通过MyClass.class_var
访问类变量。
my_class = MyClass()
my_class.my_function() # 输出 "Hello, World!"
my_class.another_function() # 输出 "Hello, World!"
从上面的代码可以看到,类变量是类相关而不是实例相关的。因此,所有的MyClass实例都共享同一个class_var值。