擅长:python、mysql、java
<p>为什么不直接使用工厂函数呢?你知道吗</p>
<pre><code>class BaseFile(object):
"""Inherit these common methods and properties"""
def __init__(self, fname):
self.fname = fname
def is_pretty(self):
NotImplemented
class TextFileClass(BaseFile):
def is_pretty(self):
return False
class RTFFileClass(BaseFile):
def is_pretty(self):
return True
def createFileClass(fname):
if fname.endswith('.txt'):
return TextFileClass(fname)
elif fname.endswith('.rtf'):
return RTFFileClass(fname)
else:
raise Exception, 'unknown file format'
FileClass = createFileClass
</code></pre>
<p>产生:</p>
<pre><code>>>> foo = FileClass('foo.txt')
>>> type(foo)
<class '__main__.TextFileClass'>
>>> foo = FileClass('foo.rtf')
>>> type(foo)
<class '__main__.RTFFileClass'>
</code></pre>