📜  __init__ 在Python中(1)

📅  最后修改于: 2023-12-03 15:29:16.399000             🧑  作者: Mango

Python中的__init__

在Python中,__init__ 是一个特殊方法,用于在创建对象时进行初始化操作。它是一个类的构造函数,当一个对象被创建时便会调用该函数。

使用方法

我们可以使用如下的方法声明一个类:

class MyClass:
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2

在创建对象时,我们可以像下面这样初始化类:

obj = MyClass('value1', 'value2')

在这个例子中,__init__ 方法有两个参数 arg1arg2。我们在对象创建时传入了参数 'value1''value2' 来对这两个参数进行初始化。在 __init__ 方法内部,我们使用 self.arg1self.arg2 来访问这两个参数,这样这两个参数就作为了对象的属性被存储了下来。这样在后续代码中我们可以使用这些属性对对象进行操作。

常见问题
可选参数

我们可以在 __init__ 方法中为参数提供默认值,以使其成为可选参数。如:

class MyClass:
    def __init__(self, arg1, arg2="default"):
        self.arg1 = arg1
        self.arg2 = arg2

这样,在创建对象时我们可以不用传入 arg2 的值,它会使用默认值 "default"

多个初始化方法

有时候我们希望类有多个初始化方法。在Python中,我们可以使用装饰器来实现这个目的。例如:

class MyClass:
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2

    @classmethod
    def from_dict(cls, d):
        return cls(d['arg1'], d['arg2'])

    @classmethod
    def from_list(cls, lst):
        return cls(*lst)

这个例子中,我们除了常规的 __init__ 方法外,还定义了两个使用装饰器声明为类方法的初始化方法。这两个方法可以根据不同的输入方式来创建对象。

调用父类的__init__方法

在一个子类中,我们可以通过 super() 来调用其父类的方法。例如:

class ChildClass(ParentClass):
    def __init__(self, arg1, arg2, arg3):
        super().__init__(arg1)
        self.arg2 = arg2
        self.arg3 = arg3

在这个例子中,我们调用了 super().__init__(arg1) 来调用其父类的 __init__ 方法。这样,在子类中我们就可以使用 self.arg1 并在父类中将其初始化为一个默认值。

小结

在Python中,__init__ 是一个特殊的方法,用于在创建对象时进行初始化操作。我们可以在其中定义类的属性的初始化,以及其他一些我们希望在对象创建时执行的语句。__init__ 方法可以带有参数,也可以使用默认值。在子类中,我们可以使用 super() 来调用其父类的 __init__ 方法。