__init__ 和 self 在 Python 中做了什么?

新手上路,请多包涵

我正在学习 Python 编程语言,但遇到了一些我不完全理解的东西。

在这样的方法中:

 def method(self, blah):
    def __init__(?):
        ....
    ....

self 做什么?它是什么意思?它是强制性的吗?

__init__ 方法有什么作用?为什么有必要? (ETC。)

我认为它们可能是 OOP 构造,但我不太了解。

原文由 GUIDED BOMB 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 725
1 个回答

在这段代码中:

 class A(object):
    def __init__(self):
        self.x = 'Hello'

    def method_a(self, foo):
        print self.x + ' ' + foo

self 变量表示对象本身的实例。大多数面向对象的语言将 this 作为隐藏参数传递给对象上定义的方法;蟒蛇没有。您必须明确声明它。当您创建 A 类的实例并调用其方法时,它将自动传递,如 …

 a = A()               # We do not pass any argument to the __init__ method
a.method_a('Sailor!') # We only pass a single argument

__init__ 方法大致代表了 Python 中的构造函数。当您调用 A() 时,Python 会为您创建一个对象,并将其作为第一个参数传递给 __init__ 方法。任何附加参数(例如 A(24, 'Hello') )也将作为参数传递——在这种情况下会引发异常,因为构造函数不期望它们。

原文由 Chris B. 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题