擅长:python、mysql、java
<p>正如评论中所建议的,您可以将类<code>ExampleClass</code>拆分为两个独立的类。目前,您的类正在尝试执行<code>foo</code>和<code>bar</code>操作,但如果未定义一个,则可能会引发异常,因为调用<code>calculateFoo()</code>或<code>calculateBar()</code>时未定义一个成员</p>
<p>您可以做的是使用带有函数<code>calculate()</code>的<a href="https://stackoverflow.com/questions/3570796/why-use-abstract-base-classes-in-python">abstract base class</a>并由此派生两个独立的类<code>Foo</code>和<code>Bar</code>。派生类将被强制重写该函数。抽象基类纯粹是一个模板——您将无法创建它的实例,但它充当派生类的模板</p>
<p>例如:</p>
<pre><code>from abc import ABC, abstractmethod
class BaseClass(ABC):
@abstractmethod
def calculate(self):
pass
class Foo(BaseClass):
def __init__(self, foo):
self.foo = foo
def calculate(self):
return self.foo / 2.0
class Bar(BaseClass):
def __init__(self, bar):
self.bar = bar
def calculate(self):
return self.bar * 2.0
foo = Foo(10)
print(foo.calculate())
bar = Bar(10)
print(bar.calculate())
</code></pre>
<p>输出:</p>
<pre><code>5.0
20.0
</code></pre>