我正在尝试在基类中定义一些方法,然后可以将其用作子类的类/静态方法,如下所示:
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
而不必重新定义它或传递到方法中?我也不想打电话。我正在使用 Python 2.6。Common
Foo
Foo
Foo
Common
Foo.find(Foo, 3)
编辑: derp,看起来我有另一个我没有注意到的find
声明,它导致了. 我会删除这个问题,但 Nix 提到了代码异味,所以现在我就如何避免以无异味的方式在我的所有模型类中进行定义征求建议。Common
TypeError
find