python类定义多个构造函数

  • Post category:Python

Python中类定义多个构造函数可以通过方法重载实现。在Python中,每个类都至少有一个构造方法__init__,默认的构造方法有且只有一个参数self,用来指代类的实例对象。为了定义多个构造方法,可以在类中增加其他名称的方法,用来接受参数并返回类的实例对象。下面是具体的构造函数定义步骤:

  1. 定义类,并在类中定义默认的构造函数__init__,该构造函数只需要一个参数self
class Person:

  def __init__(self, name):
    self.name = name
    self.age = 0
  1. 定义其他构造函数,可以通过不同的参数列表定义不同的构造函数,注意不同构造函数的参数不能完全一样;
class Person:

  def __init__(self, name):
    self.name = name
    self.age = 0

  def from_birth_year(name, birth_year):
    self.name = name
    self.age = datetime.datetime.now().year - birth_year

  def from_input(name):
    self.name = name
    self.age = int(input("Enter age:"))

在上面的例子中,我们定义了两个不同的构造函数from_birth_yearfrom_input,分别用来接受不同的参数列表。

  1. 定义其他构造函数时,需要显式地调用__init__方法,以便将一些属性或变量初始化到对象中;
class Person:

  def __init__(self, name):
    self.name = name
    self.age = 0

  def from_birth_year(name, birth_year):
    self.name = name
    self.age = datetime.datetime.now().year - birth_year
    super().__init__(name)

  def from_input(name):
    self.name = name
    self.age = int(input("Enter age:"))
    super().__init__(name)

在上面的例子中,我们通过super().__init__(name)来显式调用默认构造函数__init__,从而完成对象的初始化。

下面是两个实例代码,来说明如何使用多个构造函数:

# 例子1:使用from_birth_year构造函数
person1 = Person.from_birth_year("Tom", 1995)
print(person1.name, person1.age) #Tom 26

# 例子2:使用from_input构造函数
person2 = Person.from_input("Jerry")
print(person2.name, person2.age) 
#Enter age:30
#Jerry 30

在上面的例子中,我们实例化了两个Person对象,分别使用了两种不同的构造函数,从而得到了不同的对象。