首页 > 解决方案 > 为什么可以在不表示'self'关键字的情况下初始化python类属性?

问题描述

class Foo():
    def __init__(self):
        pass

    def makeInstanceAttribute(oops):
        oops.x = 10

f = Foo()
f.makeInstanceAttribute()
print(f.x)

它正在打印10,它是如何工作的?为什么oops具有相同的存在效果self

标签: 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>
>>> 

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


推荐阅读