python - __init__ 和 self 在 Python 中做了什么?

标签 python oop self

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

在这样的方法中:

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

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

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

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

最佳答案

在这段代码中:

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

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

... self 变量表示对象本身的实例。大多数面向对象的语言将此作为隐藏参数传递给定义在对象上的方法。 Python 没有。您必须明确声明它。当您创建 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'))也将作为参数传递——在这种情况下会引发异常,因为构造函数并不期望它们。

关于python - __init__ 和 self 在 Python 中做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/625083/

相关文章:

python - 如何在 Pandas 中正确找到偏度和峰度?

java - 当我尝试重写父类的方法时出现错误。这是为什么?

c# - 只接受声明了一些接口(interface)的类型

java - java读写数据报错

python - self 如何在 Python 中绑定(bind)?

python - 多处理:AttributeError: 'Imported' 对象没有属性 '__private_method'

python - 无法更改音频文件格式-python

python - 获取键总数小于或等于 X 的前 5 个值

ruby-on-rails - Rails-belongs_to 和 has_many(同一类)-如何访问父级和子级

python - 做self.something = something的目的是什么