擅长:python、mysql、java
<p>您可以记住属性中的<code>mode</code>,并检查是否传递了<code>optional_parameter</code>:</p>
<pre><code>class c:
def __init__(self, mode=False):
self.mode = mode
def foo(self, optional_parameter=""):
if self.mode and optional_parameter == "":
raise RuntimeError("optional_parameter must be passed")
print("something %s" % optional_parameter)
</code></pre>
<p>你可以用字典解包来概括这一点:</p>
<pre><code>def foo(self, **kwargs):
if self.mode and 'optional_parameter' not in kwargs:
raise RuntimeError("optional_parameter must be passed")
print("something %s" % kwargs['optional_parameter'])
</code></pre>
<p>对于这种情况,我找不到最好的例外,您可能需要创建自己的例外。不过,我可以使用<a href="https://docs.python.org/2/library/exceptions.html#exceptions.RuntimeError" rel="nofollow noreferrer">^{<cd3>}</a>。你知道吗</p>