人々が「Zen of Python」をオウムするとき、それが何かの正当化であるかのように、私は多少恥ずかしいです。それは設計哲学です。特定の設計上の決定は、常により具体的な用語で説明できますが、そうでなければなりません。そうでなければ、「Zen of Python」が何かをするための言い訳になります。
その理由は単純です。基本クラスを構築する方法とまったく同様の方法で、必ずしも派生クラスを構築する必要はありません。あなたはより多くのパラメータを持っているかもしれません、より少なく、それらは異なる順序にあるか、まったく関係がないかもしれません。
class myFile(object):
def __init__(self, filename, mode):
self.f = open(filename, mode)
class readFile(myFile):
def __init__(self, filename):
super(readFile, self).__init__(filename, "r")
class tempFile(myFile):
def __init__(self, mode):
super(tempFile, self).__init__("/tmp/file", mode)
class wordsFile(myFile):
def __init__(self, language):
super(wordsFile, self).__init__("/usr/share/dict/%s" % language, "r")
これは、だけでなく、すべての派生メソッドに適用されます__init__
。
__init__
メソッドを継承するデコレーターを作成し、サブクラスを自動的に検索してデコレートすることもできます。