为什么以下工作:
(def session (sessionmaker))
(.configure session :bind engine)
...但是(def session (.configure (sessionmaker) :bind engine))
导致我的Hy应用程序抛出NoneType
TypeError
?
答案 0 :(得分:2)
那么(sessionmaker)
会成为“会话”对象吗? (.configure (sessionmaker) :bind engine)
方法调用是否返回该会话对象?还是只是为了副作用?我怀疑它是后者,只返回None
。您可能正在寻找doto
表单,它允许您配置对象,但最后会返回它。所以代码将是
(def session (doto (sessionmaker) (.configure :bind engine)))
如果你熟悉Python,那么REPL中的$ hy --spy
选项对于理解Hy的编译方式非常有用。