Python __init__
如果你已经在面向对象编程中工作过,你可能会遇到init这个词很多次。 __init__
是一个Python的方法。它类似于Java和C++等语言中的构造函数。 了解Python中的类和对象将使__init__
方法变得易于理解。
这里有一些先决知识:
- 类是一个有变量/属性和函数/方法声明的蓝图。要使用类,我们需要为创建的类创建对象。
- 使用对象,我们可以调用类中的方法并访问声明的属性。
- 每个对象可以在类中具有自己的属性值。我们可以在创建对象时将需要的值作为参数传递。
这是一个简单的类和对象的示例:
class planet:
var1 = "Planet"
var2 = "Solar system"
def function (self):
print ("I'm earth")
print ("I'm a", self. var1, "in", self. var2)
earth = planet ()
print (earth. var1)
print (earth. var2)
earth. function ()
输出:
分析:
我们创建了一个名为planet的类。在这个类中:
- 我们声明了两个变量var1和var2。
- 我们创建了一个函数,其中打印了两个字符串,这两个字符串在类中声明的变量内。
现在,我们创建了一个名为 earth 的对象,并且在 不传递任何参数的情况下 访问了类中的两个变量和方法。
- 我们创建的对象没有自己的变量。
现在,在类中self是什么意思?
当我们为类创建一个对象并调用函数时,self将被创建的对象替换。它就像一个对象的占位符。在我们创建的类中,我们有两个对于我们创建的所有对象都通用的变量。因此,即使我们用对象名调用变量,我们也会得到所有对象的相同值。
现在,让我们了解一下’__init__’能做什么?
- 我们上面讨论过,每个对象都可以有其类的属性的值。可以使用
__init__
方法实现此功能。 - 这是一个构造函数,允许类持有具有不同值的对象。
- 我们不需要像调用普通方法那样调用它。它类似于类内部的一个方法。它在为类创建对象时立即执行。
现在,让我们看一下上面的示例与__init__
方法:
class planet:
def __init__ (self, name, number):
self. name = name
self. number = number
def function (self):
print ("I am", self. name)
print ("I am the", self. number, "planet in the solar system")
earth = planet ('earth', 3)
earth. function ()
输出:
理解:
- 我们在创建对象时传递了参数。
- 正如我们之前讨论的,当创建一个对象时:
__init__
方法会被执行。- ‘self’ 会被替换为创建的对象。
当我们创建了对象 ‘earth’:
def __init__ (earth, 'earth', 3):
earth. name = 'earth'
earth. number = 3
这是__init__
方法中的内部机制。
这样,earth()对象就可以拥有它的属性。
现在,如果我们创建另一个对象:
venus = planet ('venus', 2)
venus. function ()
因此,我们可以创建任意数量的对象,每个对象都可以为属性设置其值。
这是Python面向对象编程中__init__
方法的功能。
让我们再看一个示例:
- 我们可以从用户那里输入值,然后将它们作为属性传递给一个对象。
class Student:
def __init__ (self, name, age, email):
self. name = name
self. age = age
self. email = email
name = input ("Please enter the name of the student1: ")
age = int (input ("Please enter the age of the student1: "))
stud = Student (name, age, 'Jeevani@gmail.com')
name = input ("Please enter the name of the student2: ")
age = int (input ("Please enter the age of the student2: "))
stud2 = Student (name, age, 'Harini@gmail.com')
print ("Stud_1. name =", stud. name)
print ("Stud_2. name =", stud2. name)
输出:
理解:
在程序中,我们创建了一个名为“Student”的类,它有三个属性:name,age和email。使用self变量,我们在__init__
方法中定义了这些属性。我们创建了两个对象stud和stud2。对于这两个对象,我们已经给出了email的值,并要求用户输入name和age属性的值,然后将这些值传递给对象。
注意:
- 我们可以在一个类中创建任意数量的对象和属性和函数。但是, 一个类中只能有一个明确的__init__方法。
- 即使我们编写了多个
__init__
方法,最新的方法将覆盖之前的__init__
方法。