我希望在这样的用例中,我可以将我的DB模式(通过类声明)保存在SQLAlchemy中。同时,我想将各种静态方法或util方法添加到这些对象中。但我希望保持架构的整洁,只做架构。有没有一种方法可以编写这些额外的方法,使我可以在类的范围之外声明方法?谢谢。
发布于 2011-11-01 05:09:41
你的意思是这样的吗(lol()是一个静态的“注入”方法)?
class Foo (object):
pass
Foo.lol = staticmethod (lambda: 1)
print Foo.lol ()你的问题不完全清楚。
发布于 2011-11-01 05:32:12
因为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() )https://stackoverflow.com/questions/7959692
复制相似问题