Python的类定义可以包含多个构造函数,这些构造函数之间需要区分。Python中定义类的构造函数是通过__init__方法实现的。如果我们想要定义多个构造函数,我们需要使用额外的方法并为它们分配不同的名称。
以下是定义多个构造函数的步骤:
1. 定义第一个构造函数
第一个构造函数的名称应为__init__(),与常规方法相同。这是定义类的默认构造函数。
class MyClass:
def __init__(self, a, b):
self.a = a
self.b = b
2. 定义其他构造函数
其他构造函数的名称可以根据您的喜好来设置,只需确保它们不与已定义的其他函数重名即可。在这个例子中,我们定义了一个名为from_input()的其他构造函数。
class MyClass:
def __init__(self, a, b):
self.a = a
self.b = b
@classmethod
def from_input(cls):
a = int(input("Input a: "))
b = int(input("Input b: "))
return cls(a, b)
我们使用classmethod装饰器来创建from_input()方法。classmethod是一个Python内置的装饰器,它将一个函数转换为类方法。
3. 调用其他构造函数
调用其他构造函数与调用常规方法相同。直接使用类名称加上方法名称即可。
obj1 = MyClass(10, 20)
obj2 = MyClass.from_input()
print(obj1.a, obj1.b)
print(obj2.a, obj2.b)
在这个例子中,我们将从用户输入中创建一个新的MyClass对象。
完整的源代码范例:
class MyClass:
def __init__(self, a, b):
self.a = a
self.b = b
@classmethod
def from_input(cls):
a = int(input("Input a: "))
b = int(input("Input b: "))
return cls(a, b)
obj1 = MyClass(10, 20)
obj2 = MyClass.from_input()
print(obj1.a, obj1.b)
print(obj2.a, obj2.b)
结果:
10 20
Input a: 30
Input b: 40
30 40
以上就是Python类定义多个构造函数的完整攻略。