擅长:python、mysql、java
<p>这应该是您想要的,通过将getTitle方法提取到基类并动态决定应该使用哪种策略:</p>
<pre><code>class Book(object):
def __init__(self, title):
self.title = title
def setCategory(self, category):
self.category = category
def getTitle(self):
if self.category == 'romance':
return self.title.upper()
elif self.category == 'fiction':
return self.title.lower().replace(' ', '_')
else:
raise NotImplementedError()
class RomanceBook(Book):
def __init__(self, title):
super(RomanceBook, self).__init__(title)
self.category = 'romance'
class FictionBook(Book):
def __init__(self, title):
super(FictionBook, self).__init__(title)
self.category = 'fiction'
romance_book = RomanceBook('Love Story')
print(romance_book.getTitle())
fiction_book = FictionBook('Star Wars')
print(fiction_book.getTitle())
fiction_book.setCategory('romance')
print(fiction_book.getTitle())
</code></pre>