学习在Python中使用__init__()函数

62 阅读4分钟

Python同时支持结构化编程和面向对象编程。类和对象被用来实现面向对象的编程。类定义了对象的属性。构造方法在面向对象编程中用于声明、初始化和操作对象,当类的一个对象被创建时,这个方法被自动调用。在Python中,**__init__()**函数的作用与构造方法类似,它被声明在类的内部。

语法

__init__()函数的语法给出如下。

__init__(self, [arguments])

该函数的第一个参数用来指代类的当前对象。这个函数的其它参数是可选的。在第一个参数之后可以使用零个或多个参数来初始化类的变量。在本教程的下一部分中,将介绍 __init__() 函数的不同用法。

例子-1:使用没有任何参数的构造函数

用下面的脚本创建一个 Python 文件,通过使用 __init__() 函数定义一个没有任何参数的构造方法。当TestClass的对象被创建时,这个函数将被调用。

#Declare a class with parameterless constructor

class TestClass:

#Declare constructor method

def __init__(self):

#Print a simple message

print('Constructor method has been called.')

#Create object of the class

object = TestClass()

输出

在执行了上述脚本之后,会出现以下输出。当类的对象被创建时,__init__()函数已经被调用,来自__init__()函数的信息,'构造函数方法已被调用'已经被打印出来。

例子-2:使用带参数的构造函数

用下面的脚本创建一个 Python 文件,通过使用 __init__() 函数定义一个带参数的构造方法。在脚本中已经为TestClass类创建了两个对象。因此,__init__()函数将被调用两次,并用对象创建时传递给函数的值来初始化名称变量。

#Declare a class with a parameterized constructor

class TestClass:

#Declare constructor method with one argument

def __init__(self, name):

#Print a simple message

print('Constructor method has been called.')

#Initialized the class variable

self.name = name

#Create object of the class

object1 = TestClass('Mir Abbas')

print('Welcome, ', object1.name)

#Create another object of the class

object2 = TestClass('Nila Chowdhury')

print('Welcome, ', object1.name)

print('Welcome, ', object2.name)

输出

执行上述脚本后会出现以下输出。第一个对象已被创建,其值为 "Mir Abbas",第二个对象已被创建,其值为 "Nila Chowdhury"。输出显示,第二个对象创建了第一个对象的克隆。所以,第一个对象的属性值并没有被第二个对象所覆盖。

例三:用另一个方法使用构造函数

用下面的脚本创建一个 Python 文件,其中一个构造函数方法已经和另一个方法一起被声明。在这里,__init__()函数将在创建对象时接受两个参数值,用来初始化两个类的变量,而类的另一个方法将被调用来打印类变量的值。

#Declare a class with parameterized constructor

class TestClass:

#Declare constructor method with one argument

def __init__(self, name, profession):

#Print a simple message

print('Constructor method has been called.')

#Initialized the class variables

self.name = name

self.profession = profession

#Call another method

self.display_info()

#Define another method of the class

def display_info(self):

print("The profession of ", self.name, " is ", self.profession)

#Create object of the class

object = TestClass('Kabir Hossain', 'CEO')

输出

执行上述脚本后会出现以下输出。在创建对象时,两个类的变量已经被初始化为**"Kabir Hossain ""CEO "** 的值,这些值已经被打印出来。

例四:使用具有继承性的构造函数

用下面的脚本创建一个Python文件,其中的构造方法已经用继承的特性实现了。这里为父类和子类都定义了 __init__() 函数。display() 方法也已经为父类和子类定义。父类的 __init__() 函数有一个参数,子类有三个参数。

#Declare the parent class

class ParentClass:

def __init__(self, name):

print("The parent constructor has been called.\n")

self.name = name

def display(self):

print("Name: ", self.name)

#Declare the child class

class ChildClass(ParentClass):

def __init__(self, name, post, salary):

#Call constructor of the parent class

ParentClass.__init__(self, name)

print("The child constructor has been called.\n")

self.post = post

self.salary = salary

def display(self):

print("Name: ", self.name)

print("Post: ", self.post)

print("Salary: ", self.salary)

#Create object of the parent class

object1 = ParentClass("Tanvir Hossain")

object1.display()

#Create object of the child class

object2 = ChildClass("Farheen Hasan", 'CEO', 700000)

object2.display()

输出

执行上述脚本后,会出现以下输出。

例子5:使用多重继承的构造函数

用下面的脚本创建一个 Python 文件,其中子类已经从两个父类中创建,**__init__()函数已经为这三个类定义。子类还有一个名为display()**的方法,用来打印类中变量的值。

#Declare the parent class

class ParentClass1:

def __init__(self, name, email, contact_no):

print("The parent constructor has been called.")

self.name = name

self.email = email

self.contact_no = contact_no

#Declare the parent class

class ParentClass2:

def __init__(self, department, post):

print("Another parent constructor has been called.")

self.department = department

self.post = post

#Declare the child class

class ChildClass(ParentClass1, ParentClass2):

def __init__(self, name, email, contact_no, department, post, salary):

#Call constructor of the parent class

ParentClass1.__init__(self, name, email, contact_no)

# Call constructor of another parent class

ParentClass2.__init__(self, department, post)

print("The child constructor has been called.\n")

self.salary = salary

def display(self):

print("Name: ", self.name)

print("Email: ", self.email)

print("Contact No: ", self.contact_no)

print("Department: ", self.department)

print("Post: ", self.post)

print("Salary: ", self.salary)

#Create object of the child class

object = ChildClass('Farhan Akter', 'farhan@gmail.com', '8801937894567', 'HR', 'Manager', 500000)

#Call the display method

object.display()

输出


执行上述脚本后会出现以下输出。

结论

本教程通过简单的例子展示了Python中__init__()函数的使用方法,以帮助Python用户了解正确使用这个函数的目的。