在 Hy 中指定元类的语法

Syntax for specifying Metaclasses in Hy

在 Hy 中指定元类的语法是什么。我尝试了以下方法:

(defclass Metaclass [] )

(defclass Foo [ :meta Metaclass ] )
(defclass Foo [ [:meta Metaclass] ] )

但这没有用

您可以按照 Python 中的方式进行操作。

这是在Python3和Hy最新的master上,在repl中使用--spy选项显示Python编译。

=> (defclass Foo [:metaclass print])
class Foo(metaclass=print):
    pass


None

Foo () {'__module__': '__console__', '__qualname__': 'Foo'}

在 Python 2.

=> (defclass Foo []
...  (setv __metaclass__ print))
class Foo:
    __metaclass__ = print


None

Foo () {'__module__': '__console__', '__metaclass__': <built-in function print>}

如果你需要它为任何一个工作,你可以尝试安装 six 兼容性库。