我来自Java,所以我在这里感到困惑.
class Sample(object):
x = 100 # class var?
def __init__(self, value):
self.y = value # instance var?
z = 300 # private var? how do we access this outside Sample?
Run Code Online (Sandbox Code Playgroud)
3变量声明有什么区别?
var*_*tec 23
class Sample(object):
x = 100
_a = 1
__b = 11
def __init__(self, value):
self.y = value
self._c = 'private'
self.__d = 'more private'
z = 300
Run Code Online (Sandbox Code Playgroud)
在这个例子中:
x 是类变量, _a 是私有类变量(通过命名约定),__b 是私有类变量(由解释器修改), y 是实例变量,_c 是私有实例变量(通过命名约定),__d 是私有实例变量(由解释器修改),z是__init__方法范围内的局部变量.如果名称中有单个下划线,则严格来说是一种约定.仍然可以访问这些变量.如果是双下划线名称,它们会被破坏.它仍然可以规避这一点.