不了解有关元类的此SyntaxError

时间:2019-02-23 07:59:46

标签: python python-2.7 ethereum

下面的代码是pylp包中的pyrlp包中的atomic.py。

import abc


class Atomic(metaclass=abc.ABCMeta):
    """ABC for objects that can be RLP encoded as is."""
    pass


Atomic.register(bytes)
Atomic.register(bytearray)

这是控制台中的错误信息:

from rlp.atomic import Atomic
  File "/Users/jerryin/Desktop/pyeth/pyrlp/rlp/atomic.py", line 4
    class Atomic(metaclass=abc.ABCMeta):
                          ^
SyntaxError: invalid syntax

自导入以来,我尚未修改过该项目。谁能告诉我这是怎么回事?

另外,我在该项目中使用的解释器是Python 2.7。

2 个答案:

答案 0 :(得分:2)

Python 2不支持类的metaclass关键字参数和pyrlp dropped support for Python 2 in April 2018

改为使用Python 3。

答案 1 :(得分:0)

用于元类的Python 2“语法”是一个神奇的类属性:

class Atomic(object):
    __metaclass__ = abc.ABCMeta

abc软件包还具有使用ABCMeta的常规类,该类允许使用继承:

class Atomic(abc.ABC):
    pass

请注意,除非要修补该库,否则应改用Python 3。该库不是为Python 2设计的。