为什么 python 类属性可以在不表示'self'关键字的情况下初始化?


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>
>>> 

这个问题可能与你的问题有关,你可能会发现它很有帮助。

相关内容

最新更新