首页 >后端开发 >Python教程 >变量作用域在 Python 类中如何工作?

变量作用域在 Python 类中如何工作?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-17 21:58:01885浏览

How Do Variable Scopes Work in Python Classes?

理解 Python 类中的变量作用域

在 Python 类中声明变量一开始可能会令人困惑。本文旨在阐明与类上下文中变量声明相关的不同作用域和细微差别。

一般作用域规则:

  • 类变量: 在类中声明外部函数,所有类都可以访问这些变量函数。
  • 局部变量:在类的函数内部声明,这些变量只能在该函数内访问。
  • 实例变量:使用声明self.(变量名) 在类中的函数内部,这些变量可供所有类访问函数。

实例变量与全局变量:

实例变量(使用 self.(变量名称)声明)的行为与全局变量(在外部声明)不同任何函数或类)。虽然类中声明的所有内容在技术上都是公共的,但实例变量绑定到单个对象实例。

示例:

class Test:
    a = None  # Class variable
    b = None  # Class variable

    def __init__(self, a):
        self.a = a  # Instance variable

在此示例中,类变量a 和 b 可供所有类函数访问。然而,实例变量 self.a 是特定于每个对象实例的。在 __init__ 中设置 self.a 不会影响类变量 a。

受保护的变量:

虽然 Python 没有明确定义私有或受保护的变量,但以下划线 (_) 被视为受保护。从技术上讲,它们仍然可以在类外访问,但修改它们的名称会阻止访问。

私有变量:

以双下划线 (__) 为前缀的变量被视为私有。它们的名称被破坏,使得很难在类外部直接访问它们。

其他细微差别:

  • 在本地函数内但在 self 之外分配的变量。(变量名)在该函数外部不可用。
  • Mangle-proof protected 和 private 变量在外部并非完全不可访问类,但不应依赖其进行真正的封装。

以上是变量作用域在 Python 类中如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn