在Hy中指定元类的语法

时间:2018-06-23 07:44:44

标签: python hy

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

(defclass Metaclass [] )

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

但这不起作用

1 个答案:

答案 0 :(得分:1)

您可以像在Python中一样进行操作。

这是在Python 3和Hy的最新母版上进行的,并使用了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兼容性库。