由于你问题中的清单不是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'
在开始的时候,a和b只对类本身定义的变量-通过访问
Test.a,并
Test.b和不针对任何实例。
创建该类的实例时(导致
__init__执行):
- print self.a 找不到实例变量,因此返回类变量
- self.a = a:a创建一个新的实例变量。这遮盖了类变量,因此self.a现在将引用实例变量。访问你现在必须使用的类变量Test.a
- 分配
self._x
创建一个新的实例变量。它被视为“不是公共API的一部分”(又名受保护),但从技术上讲,它没有不同的行为。 - 分配以
self.__y
创建一个名为的新实例变量_Test__y
,即,其名称被修饰,因此,除非你使用修饰的名称,否则无法从类外部访问它。这可以用于“私有”变量。 - 分配以b创建局部变量。它不能在任何地方使用,但不能在
__init__
函数中使用,因为它没有保存在实例,类或全局范围中。



