构造函数

Python中没有构造函数的概念,只有初始化方法的概念,即__init__()方法。这里借用其他面向对象语言中的构造函数的概念来描述这个初始化方法的功能。初始化方法与普通方法的定义方法一样,但是其名称是Python内部固定不可改变的。所以其定义格式为:

class MyClass:
	def __init__(self):
		pass

初始化方法除了self参数以外,还可以接受其他的参数,这一点与其他方法无异。但是如果添加了其他的参数,那么在类实例的实例化时,也需要传入相应的参数。例如:

class MyCalss:
	def __init__(self, mark):
		self.mark = mark

x = MyClass('check')

上例中MyClass的初始化方法中声明的self.mark是一个实例变量,可以在类中的其他方法中使用。这个实例变量从类内部需要使用self.name的形式来访问,在类外部则需要使用实例名.name的形式来访问。

初始化方法__init__()也可以被重载。可以在类中多次定义初始化方法,但它们所能够接收的参数列表不能相同。在实例化时,传入不同数量的参数,Python就会调用相应的初始化方法。

读者可自行在交互式解释器中试验以下代码。

class MyClass:
	w = 0
	h = 0

	def __init__(self, w):
		self.w = w
	
	def __init__(self, w, h):
		self.w = w
		self.h = h
	
	def export(self):
		print("Width: {0}, height: {1}".format(self.w, self.h))

x1 = MyClass(9)
x1.export()

x2 = MyClass(8, 10)
x2.export()