[英]class definition error in python
定义这样的类构造函数有什么问题:
我试图根据输入d保持None还是获取值分配来构造两个不同的对象。
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)
self.count = 3
return triangleFace
else:
quadFace = MSMeshFace(self.a, self.b, self.c, self.d)
self.count = 4
return quadFace
构造函数(实际上是初始化器)不应返回任何东西,而应初始化一个新创建的实例。 您想要的是:
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
self.count = 3 if self.d is None else 4
如果您尝试基于参数返回不同类型的对象,请创建一个新函数,如:
def make_face(*args):
if len(args) == 3: # triangle face
return TriMeshFace(*args)
else: # quad face
return QuadMeshFace(*args)
您不能(通常)在构造函数中更改类型(尽管您可以在__new__
中进行__new__
,但是您不需要这样做)。 如果要向MSMeshface
添加功能(如注释中所建议),请定义包含这些功能的基类,例如:
class MeshBase:
def addData(self, data): pass
def ToDSMeshFace(self): pass
class TriMeshFace(MeshBase): pass
class QuadMeshFace(MeshBase): pass
您的意图似乎如下:
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
self.count = 3 if self.d is None else 4
构造的对象将自动返回。 该对象已经存在,并由self
指向。 您不能在类的__init__
方法中影响创建对象的时间,只能对其进行初始化 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.