gpt4 book ai didi

python - Python 类中的变量作用域

转载 作者:太空宇宙 更新时间:2023-11-03 21:29:23 24 4
gpt4 key购买 nike

在类中声明变量(在函数之外):所有类函数都可以访问它(基本上是公共(public)变量)

在类内的函数内声明变量:只有该函数可以访问它(它在该函数的作用域内)

在类内的函数内使用 self.(variable name) 声明变量:所有类函数都可以访问它(这与 global (variable name) 有何不同>?)

由于没有私有(private)/ protected ,所以一切都是公共(public)的,因此从类内部访问的所有内容都可以从类外部访问。

还有其他我应该知道的细微差别吗?或者我已经了解了吗?

最佳答案

由于您问题中的列表并不是 100% 清楚,我决定用一个简单的例子来解释它。它还包括一些您在列表中未提及的内容,例如 __something 变量。

class Test:
a = None
b = None

def __init__(self, a):
print self.a
self.a = a
self._x = 123
self.__y = 123
b = 'meow'

一开始,ab只是为类本身定义的变量 - 通过Test.aTest访问.b 并且不特定于任何实例。

创建该类的实例时(这会导致执行 __init__):

  • print self.a 未找到实例变量,因此返回类变量
  • self.a = a:创建一个新的实例变量a。这会隐藏类变量,因此 self.a 现在将引用实例变量;要访问类变量,您现在必须使用 Test.a
  • self._x 的赋值会创建一个新的实例变量。它被认为“不是公共(public) API 的一部分”(又名 protected ),但从技术上讲它没有不同的行为。
  • self.__y 的赋值创建了一个名为 _Test__y 的新实例变量,即它的名称已损坏,因此除非您使用损坏的名称,否则无法从外部访问它。类(class)。这可以用于“私有(private)”变量。
  • b 的赋值创建了一个局部变量。除了 __init__ 函数之外,它不能从任何地方使用,因为它不保存在实例、类或全局作用域中。

关于python - Python 类中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53626073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com