基本クラスでいくつかのメソッドを定義しようとしています。これらのメソッドは、次のように、子クラスのクラス/静的メソッドとして使用できます。
class Common():
@classmethod
def find(cls, id): # When Foo.find is called, cls needs to be Foo
rows = Session.query(cls)
rows = rows.filter(cls.id == id)
return rows.first()
class Foo(Common):
pass
>> Foo.find(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: find() takes exactly 2 arguments (1 given)
で再定義したり、のメソッドにパススルーしたりすることなく、で使用できるように定義find
するにはどうすればよいですか?私も電話する必要はありません。Python2.6を使用しています。Common
Foo
Foo
Foo
Common
Foo.find(Foo, 3)
編集: derp、気づかなかったという点で別のfind
宣言があったようですCommon
が、それが原因でしたTypeError
。find
私はこの質問を削除しますが、Nixはコードの臭いについて言及したので、今度はすべてのモデルクラスを臭いのない方法で定義しないようにする方法について提案を求めます。