我试图将我的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]
但似乎工作正常。
答案 0 :(得分:3)
这是一个自我回答,最初由提问者粘贴到问题正文中。
导入unicode_literals
时,您可以使用b''
表示法来声明非unicode字符串,它们正是__slots__
所需要的。