在python中定义具有可变输入数量的类

时间:2014-12-04 23:19:11

标签: python class constructor

如何定义具有两个可能输入的类构造函数:

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

这是构建该类的有效方法吗?

1 个答案:

答案 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)