在python中,不可能不止一次地定义init函数,因为知道了该语言的工作原理,这是相当公平的。当创建一个对象时,会调用init,因此,拥有其中两个对象将产生不确定性。然而,在某些设计中,这种特性是可取的。例如:class Triangle(object):
def __init__(self,vertices):
self.v1 = vertices[0]
self.v2 = vertices[1]
self.v3 = vertices[2]
def area(self):
# calculate the are using vertices
...
return result
class Triangle(object):
def __init__(self,sides):
self.v1 = sides[0]
self.v2 = sides[1]
self.v3 = sides[2]
def area(self):
# calculate the are using sides
...
return result
在这种情况下,我们有相同数量的属性要初始化,而且它们是相互关联的,因此从一个属性中,您可以获得其他。对,在这个具体的例子中,我们可以处理这样一个事实:顶点是元组,而边可能是浮点数(或字符串或其他东西),但当然情况并非总是如此。在
一种可能的解决方案是将初始化过程委托给其他功能,如:
^{pr2}$