class Foo():
def __init__(self):
pass
def makeInstanceAttribute(oops):
oops.x = 10
f = Foo()
f.makeInstanceAttribute()
print(f.x)
,它正在打印10
,它是如何工作的?为什么oops
具有与self
相同的作用?
答案 0 :(得分:2)
self
只是一个约定。无论如何都可以命名。实际上,作为 first 参数传递给函数的是对象实例。考虑以下代码:
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>
>>>
此question可能与您有关,您可能会发现有帮助。
答案 1 :(得分:2)
通常,方法的第一个参数称为
self
。这无非是一种约定:self对Python绝对没有特殊的含义。但是请注意,如果不遵循该约定,则其他Python程序员可能对代码的可读性较低,并且还可以想到可能会依赖此类约定编写类浏览器程序。