如何定义具有两个可能输入的类构造函数:
class MSMeshFace(object):
def __init__(self, A=None, B=None, C=None)
def __init__(self, A=None, B=None, C=None, D=None)
显然这不起作用,但这就是我希望它的表现。如果有人输入A,B,C然后从这三个变量构造MSMeshFace,如果有人输入A,B,C,D然后从所有四个构造它。这样做的正确方法是什么,以便在我调用它时看起来像这样:
newFace = MSMeshFace(A, B, C)
或
newFace = MSMeshFace(A,B,C,D)
并且它们都正常工作但第一个创建了“三角形”面,第二个创建了“四边形”。我不想做像newFace = MSMeshFace()这样的东西。如果可能的话,Quad(A,B,C,D)。
或者我应该这样做:
class MSMeshFace(object):
def __init__(self, a= None, b= None, c= None, d= None):
self.a = a
self.b = b
self.c = c
self.d = d
if self.d == None:
triangleFace = MSMeshFace(self.a, self.b, self.c)
return triangleFace
else:
quadFace = MSMeshFace(self.a, self.b, self.c, self.d)
return quadFace
def addData(self, data):
self.data = data
这是构建该类的有效方法吗?
答案 0 :(得分:3)
class MSMeshFace(object):
def __init__(self, A, B, C, D=None):
if D is None:
# build mesh using (A,B,C)
else:
# build mesh using (A,B,C,D)
triFace = MSMeshFace(A,B,C)
quadFace = MSMeshFace(A,B,C,D)