📅  最后修改于: 2023-12-03 15:27:26.951000             🧑  作者: Mango
类是面向对象编程的核心。在 Python 中,类和对象是由属性和方法组成的。属性和方法可以在类内和类外定义,但是当类内使用外部定义的变量时,有可能会出现变量未检测到的情况。
Python 中,全局变量是指在模块级别定义的变量。这些变量可以在模块的任何地方被访问。全局变量可以在模块内的任何函数或类中使用。
global_var = 5
def func():
print(global_var)
在上面的例子中,global_var
是一个全局变量,可以在 func
函数中使用。
类内变量是指在类内部定义的变量。这些变量只能在类内使用,不能在类外直接访问。
class MyClass:
class_var = 10
def method(self):
self.instance_var = 5
在上面的例子中,class_var
是一个类内变量,可以在类内的方法中使用。instance_var
是一个实例变量,可以在实例方法中使用。
当类内部使用外部定义的变量时,有可能出现变量未检测到的情况。
global_var = 10
class MyClass:
class_var = 20
def method(self):
print(global_var)
print(class_var)
在上面的例子中,method
方法中的 global_var
可以被正确访问,但是 class_var
报错。这是因为 Python 在运行时检查变量名,当一个变量被使用时,Python 会先在本地作用域中查找该变量,如果找不到,就会向上级作用域查找。但是, Python 不会在全局作用域中查找类内变量。
为了解决这个问题,我们可以在访问类内变量时加上类名或者 self
关键字。
global_var = 10
class MyClass:
class_var = 20
def method(self):
print(global_var)
print(MyClass.class_var)
print(self.class_var)
在上面的例子中,class_var
通过类名和 self
关键字正确访问。
当类内部使用外部定义的变量时,需要注意变量的作用域。可以使用类名或者 self
关键字来访问类内变量。