class Foo():
def __init__(self):
pass
def makeInstanceAttribute(oops):
oops.x = 10
f = Foo()
f.makeInstanceAttribute()
print(f.x)
而且它是打印10
,它是如何工作的?为什么oops
具有与self
相同的效果?
引用Python文档:
通常,方法的第一个参数称为
self
。这只不过是一个约定:self这个名字对Python来说绝对没有特殊的含义。但是请注意,如果不遵循约定,您的代码对于其他 Python 程序员来说可能不太易读,并且也可以想象可能会编写依赖于这种约定的类浏览器程序。
self
只是一个约定。它可以随心所欲地命名。实际作为第一个参数传递给函数的是对象实例。请考虑以下代码:
class A(object):
def self_test(self):
print self
def foo(oops):
print oops
>>> a = A()
>>> a.self_test()
<__main__.A object at 0x03CB18D0>
>>> a.foo()
<__main__.A object at 0x03CB18D0>
>>>
这个问题可能与你的问题有关,你可能会发现它很有帮助。