__init__
方法会在类的对象被实例化(Instantiated) 时立即运行。这一方法可以对任何你想进行操作的目标对象进行初始化(Initialization) 操作。这里你要注意在 init 前后加上的双下划线。
案例(保存为
oop_init.py
) :
class Person:
def __init__(self, name):
self.name = name
def say_hi(self):
print('Hello, my name is ',self.name)
p = Person('Swaroop')
p.say_hi()
# 前面两行同时也能写作
# Person('Swaroop').say_hi()
输出
$ python oop_init.py
Hello, my name is Swaroop
它是如何工作的
在本例中,我们定义一个接受 name
参数(当然还有 self 参数) 的 __init__
方法。在这里,我们创建了一个字段,同样称为name
。要注意到尽管它们的名字都是“name”,但这是两个不相同的变量。虽说如此,但这并不会造成任何问题,因为 self.name
中的点号意味着这个叫作“name”的东西是某个叫作“self”的对象的一部分,而另一个name
则是一个局部变量。由于我们已经如上这般明确指出了我们所指的是哪一个名字,所以它不会引发混乱。
当我们在 Person 类下创建新的实例 p
时,我们采用的方法是先写下类的名称,后跟括在括号中的参数,形如: p = Person('Swaroop')
。
我们不会显式地调用 __init__
方法。 这正是这个方法的特殊之处所在。
现在,我们可以使用我们方法中的 self.name
字段了