Python中类变量、实例变量与局部变量的定义与访问差异解析

雨后青山
雨后青山
发布时间:2026-10-14| 3人浏览过
原创

本文详细解析Python中三种变量的声明方式与访问权限。通过对比Java等语言,说明类变量(静态变量)可直接通过类名或实例访问;实例变量需通过self在方法中定义,且依赖初始化顺序;局部变量仅作用于当前方法。文章提供完整代码示例,展示变量声明、跨方法调用及访问限制,帮助开发者避免常见错误。

Python变量类型概述

前言

尽管各类编程语言在基础语法层面存在诸多共通之处,但在具体细节的处理逻辑上往往存在显著差异。

作为一名从Java转向Python的初学者,笔者深感不同语言在编码规范上的不统一带来的学习成本。例如,Java使用分号来分隔代码块,而Python则依赖缩进空格,这种差异无形中增加了开发人员的适应难度。

鉴于此,本文旨在记录学习过程中遇到的典型问题与坑点,供后续参考。

类变量(静态变量)的声明与访问

1. “静态”变量的声明

此处借用了Java中“静态变量”的概念(Python中并无完全对应的标准术语,通常称为类变量),指既可以通过类名直接访问,也可以通过类的实例对象访问的变量。在Python中,声明此类变量极为简单,只需在类的代码块层级直接赋值即可,无需使用任何特殊关键字。

值得注意的是,在Java中相同位置声明的变量属于实例变量,只能通过对象实例进行访问,这与Python的行为不同。


class Test:
 # 这是一个“静态”变量
 className = "Test"

实例变量的声明机制与注意事项

2. 实例变量的声明

实例变量是指必须通过类的具体实例(对象)才能访问的变量。

其声明方式颇具特色:在类的任意方法中,只要在变量名前加上“self.”前缀,该变量即被识别为实例变量。这使得该变量可以在类的其他方法中被共享使用(这种机制在初学者看来可能略显特殊)。

因此,实例变量的声明有一个关键注意事项:如果该实例变量需要在其他方法中被调用,那么定义该实例变量的方法必须在调用该方法之前被执行(通常指__init__构造方法的执行顺序)。


 def __init__(self):
  # 这是一个实例变量
  self.hello = Hello()

本地变量的作用域

3. 本地变量的声明

本地变量(局部变量)是指仅在特定类的方法内部生效的变量。

其声明方式同样简单,直接在类的方法内部定义变量即可,无需额外前缀。


 def who(self):
  # 这是一个本地变量
  name = "Cain"
  return name

完整代码示例与验证

最后,提供一个完整的使用示例来演示上述概念:

首先定义一个Hello类:


class Hello:
 def who(self):
  # 这是一个本地变量
  name = "Cain"
  return name

接着定义一个Test类(其中会用到Hello类):


# -*- coding:UTF-8 -*-
from hello import Hello
 
 
class Test:
 # 这是一个“静态”变量
 className = "Test"
 
 def __init__(self):
  # 这是一个实例变量
  self.hello = Hello()
 
 def sayName(self):
  # 类的方法中访问实例变量
  print("My name is " + self.hello.who())
 
 
if __name__ == "__main__":
 test = Test()
 test.sayName()
 
 test1 = Test()
 # 通过类名直接访问静态变量
 print(Test.className)
 # 通过实例名访问静态变量
 print(test.className)
 # 通过实例名访问实例变量
 print(test.hello.who())
 # 通过类名直接访问实例变量会报错!!!
 # print(Test.hello.who())

总结

至此,关于Python中“静态”变量(类变量)、实例变量与本地变量的声明及访问方式已介绍完毕。如需了解更多相关内容,建议搜索本站过往文章或继续浏览后续教程。感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。