1

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

(defclass Metaclass [] )

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

但这没有用

4

1 回答 1

1

你可以像在 Python 中那样做。

这是 Python 3 和 Hy 的最新大师,并使用--spyrepl 中的选项来显示 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兼容性库。

于 2018-06-23T19:04:43.753 回答