在python2.7上使用带有__slots__的unicode_literals

时间:2014-05-29 06:29:19

标签: python python-2.7 pylint python-unicode

我试图将我的Python 2.7程序转换为使用from __future__ import unicode_literals,但是有一个pylint对我大喊大叫,我不能将unicode字符串作为__slots__成员。

您知道它是否确实存在问题,或者__slots__实现的unicode / string是否相同?来自Python的documentation似乎任何不可变对象都可以,但我不确定。

示例代码:

from __future__ import unicode_literals

class Foo(object):
    __slots__ = ('a', 'b')
    def __init__(self, a, b):
        self.a = a
        self.b = b

foo = Foo(5,7)
print foo.a
print foo.b

Pylint给出了以下错误消息:

a.py|4 col 18 error| [invalid-slots-object] Invalid object "u'a'" in __slots__, must contain only non empty strings [python/pylint]

但似乎工作正常。

1 个答案:

答案 0 :(得分:3)

  

这是一个自我回答,最初由提问者粘贴到问题正文中。

导入unicode_literals时,您可以使用b''表示法来声明非unicode字符串,它们正是__slots__所需要的。