<p>或者创建一个<code>classmethod</code>作为替代构造函数</p>
<pre><code>class SomeThing(object):
def __init__(self, name, x, y, z, cg_x, cg_y, cg_z, mass, inertia):
self.ref_x = x
self.ref_y = y
self.ref_z = z
self.cg_x = cg_x
self.cg_y = cg_y
self.cg_z = cg_z
self.name = name
self.mass = mass
self.inertia = inertia
@classmethod
def no_cg(cls, name, x, y, z, mass, inertia):
return cls(name, x, y, z, 0, 0, 0, mass, inertia)
</code></pre>
<p>然后您可以执行以下任一操作:</p>
<pre><code>foo = SomeThing('bar', 1, 2, 3, 4, 5, 6, "10g", some_vector)
</code></pre>
<p>或者</p>
<pre><code>foo = SomeThing.no_cg('bar', 1, 2, 3, "10g", some_vector)
</code></pre>
<p>或者为<code>mass</code>和<code>inertia</code>添加默认参数,然后测试它们</p>
<pre><code>class SomeThing(object):
def __init__(self, name, x, y, z, cg_x=0, cg_y=0, cg_z=0, mass=None, inertia=None):
if mass is None or inertia is None:
raise ValueError("Must provide mass and inertia values")
self.ref_x = x
self.ref_y = y
self.ref_z = z
self.cg_x = cg_x
self.cg_y = cg_y
self.cg_z = cg_z
self.name = name
self.mass = mass
self.inertia = inertia
</code></pre>