私はOOPパラダイムのコツをつかんでいます。拡張可能で再利用可能なコードを作成する技術は、私が改善したいものです。理論的には、広く使用されているユーティリティクラスのPythonライブラリがあるとしましょう。使いやすさのために、同じコードを持つ便利な静的メソッドを特定のクラスに追加したいのですが、ライブラリの既存の使用法を壊したくありません。新しいクラスメソッドを実装して名前を付けるための推奨される方法は何ですか?私は次のようにいくつかの推測があります:
1)明確さを維持するためにオーバーロードされたメソッド名を使用しますか?Pythonは実際には良い例ではありませんが、Javaなどの他の言語ではどうでしょうか。例えば:
class Cat(object):
def __init__(self, name):
self.name = name
def meow(self):
meow(self.name)
@staticmethod
def meow(name): # <-- Granted, Python doesn't overload method names
print "{} meowed cutely!".format(name)
2)別の、おそらく意味の少ない静的メソッド名を使用しますか?古い名前は変更できないので...これは、同じメソッドの静的バージョンだけに意味のない名前がたくさんあるため、巨大なプロジェクトでは手に負えなくなる可能性があるようです。例:
class Cat(object):
def __init__(self, name):
self.name = name
def meow(self):
meowFrom(self.name)
@staticmethod
def meowFrom(name): # Different, possibly less semantic name
print "{} meowed cutely!".format(name)
コードを完全に複製するのは悪い考えだと思います。どちらに行くのですか?それとも、より良いデザインパターンがありますか?私が知らないPythonに固有の何か?将来、自分のコードに価値がないことを確認したいと思います。そして、将来のプロジェクトのために拡張可能ないくつかの個人的なライブラリを作成します。