我想在SQLAlchemy中保存我的数据库模式(通过类声明)的用例中。同时,我想对这些对象使用各种staticmethods或util方法。但我想保持架构干净,只是架构。有没有办法编写这些额外的方法,允许我声明类的范围之外的方法?感谢。
答案 0 :(得分:0)
你的意思是这样的吗(lol()
是一个静态的“注入”方法)?
class Foo (object):
pass
Foo.lol = staticmethod (lambda: 1)
print Foo.lol ()
你的问题并不完全清楚。
答案 1 :(得分:0)
由于Python中的静态方法只不过是绑定到类的简单函数,所以你可以这样轻松地执行:
def pseudoStaticMethod ():
return 'It works.'
class A:
def __init__ ( self ):
print( 'A.__init__:', pseudoStaticMethod() )
class B:
def __init__ ( self ):
print( 'B.__init__:', pseudoStaticMethod() )
或者如果你真的想将它们分配给类/对象:
def pseudoStaticMethod ():
return 'It works.'
class A:
myStaticMethod = staticmethod( pseudoStaticMethod )
def __init__ ( self ):
print( 'A.__init__:', self.myStaticMethod() )
class B:
myStaticMethod = staticmethod( pseudoStaticMethod )
def __init__ ( self ):
print( 'B.__init__:', self.myStaticMethod() )
或者你甚至可以利用Python支持多重继承的事实:
class BaseClassWithAStaticMethod:
@staticmethod
def myStaticMethod ():
return 'It works.'
class A ( BaseClassWithAStaticMethod ):
def __init__ ( self ):
print( 'A.__init__:', self.myStaticMethod() )
class B ( BaseClassWithAStaticMethod ):
def __init__ ( self ):
print( 'B.__init__:', self.myStaticMethod() )