繁体   English   中英

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

[英]define class with variable number of inputs in python

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

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,则从所有四个变量构造MSMeshFace。 这样做的正确方法是什么,以便当我调用它时,它看起来像这样:

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

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

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM