先决条件:Python 中的面向对象编程、 Python 中的 面向对象编程 | Set 2构造函数通常用于实例化对象。构造函数的任务是在创建类的对象时对类的数据成员进行初始化(赋值)。在 Python 中, init() 方法称为构造函数,并且始终在创建对象时调用。 构造函数声明的语法:
def __init__(self): # body of the constructor
构造函数的类型:
默认构造函数的示例:
class GeekforGeeks: # default constructor def __init__(self): self.geek = "GeekforGeeks" # a method for printing data members def print_Geek(self): print(self.geek) # creating object of the class obj = GeekforGeeks() # calling the instance method using the object obj obj.print_Geek()
输出
GeekforGeeks
参数化构造函数的示例 :
class Addition: first = 0 second = 0 answer = 0 # parameterized constructor def __init__(self, f, s): self.first = f self.second = s def display(self): print("First number = " + str(self.first)) print("Second number = " + str(self.second)) print("Addition of two numbers = " + str(self.answer)) def calculate(self): self.answer = self.first + self.second # creating object of the class # this will invoke parameterized constructor obj1 = Addition(1000, 2000) # creating second object of same class obj2 = Addition(10, 20) # perform Addition on obj1 obj1.calculate() # perform Addition on obj2 obj2.calculate() # display result of obj1 obj1.display() # display result of obj2 obj2.display()
First number = 1000 Second number = 2000 Addition of two numbers = 3000 First number = 10 Second number = 20 Addition of two numbers = 30
class MyClass: def __init__(self, name=None): if name is None: print("Default constructor called") else: self.name = name print("Parameterized constructor called with name", self.name) def method(self): if hasattr(self, 'name'): print("Method called with name", self.name) else: print("Method called without a name") # Create an object of the class using the default constructor obj1 = MyClass() # Call a method of the class obj1.method() # Create an object of the class using the parameterized constructor obj2 = MyClass("John") # Call a method of the class obj2.method()
Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')
在此示例中,我们定义了一个具有默认构造函数和参数化构造函数的类 MyClass。默认构造函数检查参数是否已传入,并相应地向控制台打印一条消息。参数化构造函数接受单个参数名称,并将对象的 name 属性设置为该参数的值。
我们还定义了一个方法 method() 来检查对象是否具有 name 属性,并相应地向控制台打印一条消息。
我们使用两种类型的构造函数创建 MyClass 类的两个对象。首先,我们使用默认构造函数创建一个对象,该对象将消息“调用默认构造函数”打印到控制台。然后,我们调用该对象的 method() 方法,该方法将消息“无名称调用的方法”打印到控制台。
接下来,我们使用参数化构造函数创建一个对象,并传入名称“John”。自动调用构造函数,并将消息“使用名称 John 调用的参数化构造函数”打印到控制台。然后,我们调用该对象的 method() 方法,该方法将消息“Method Called with name John”打印到控制台。
总的来说,这个示例展示了如何在 Python 的单个类中实现这两种类型的构造函数。
总的来说,Python 中的构造函数对于初始化对象和强制封装非常有用。然而,与其他编程语言中的构造函数相比,它们可能并不总是必要的,并且其功能受到限制。
原文链接:codingdict.net