我是一个编程新手,刚开始学习Python。这可能是一个非常愚蠢的问题,请原谅我的无知。 考虑以下代码片段:
class Test1:
bar = 10
def display(self,foo):
self.foo=foo
print "foo : ",self.foo #80
def display1(self):
print "bar: ", self.bar #10
print "again foo: ", self.foo #80
if __name__ == '__main__':
test1 = Test1()
test1.display(80)
test1.display1()
print test1.bar #10
print test1.foo #80
我希望了解在使用foo和bar(就它们所定义的范围而言)时有什么区别,因为从作用域的角度来看,它们都可以在所有地方相互访问,唯一的区别是一个在函数内部,另一个在类内部,但它们两者仍然是“实例”变量。那么哪个是好的习惯呢?
此外,如果我稍微修改显示函数如下:
def display(self,foo):
self.foo=foo
foo = foo
print "self.foo : ",self.foo
print "foo : ",foo
请问有人能解释一下Python如何看待这个问题,即这两个foo
之间的self
关键字带来了什么不同/意义。
bar
不是实例变量。这两者非常不同,这就是为什么这不是关于“良好实践”的问题。这取决于你的情况,因为它们有不同的用途。 - phant0mself.bar
也是可行的,因为首先会在实例的命名空间中搜索名称bar
,然后再在类中搜索。self.bar
可行并不总是意味着bar
是一个实例变量。 - ersran9