python:var vs. self.var(有什么区别?)

NKN*_*NKN 1 python variables class

self.var和类中的var之间有什么区别吗?例如:

class nameClass:
    def names(self):
        self.name1 = "aaaa"
        name2 = "bbbb"

    def printNames(self):
        print self.name1
        print name2
Run Code Online (Sandbox Code Playgroud)

现在,如果我实例化该类,我想使用name2变量,它不会让我.

 obj1 = nameClass()
 obj.printNames()
Run Code Online (Sandbox Code Playgroud)

它将打印name1,但对于name2,它说:

NameError: global name 'name2' is not defined 
Run Code Online (Sandbox Code Playgroud)

所以我假设我们在一个方法中使用的变量最好不要使用'self',但对于我们想要稍后修改的其他变量或者将它们传递给其他方法,最好使用'self'.

还有其他区别吗?!

在此输入图像描述

gon*_*aao 6

class Foo:
    name1 = 'class variable'

    def __init__(self):
        self.name2 = 'instance variable'
        name3 = 'local variable'

    def test(self):
        print self.name1  # ok
        print self.name2  # ok
        print name3       # no
Run Code Online (Sandbox Code Playgroud)

这是一个相关的帖子:Python中的静态类变量