【问题标题】:using unicode_literals with __slots__ on python2.7在 python2.7 上使用带有 __slots__ 的 unicode_literals
【发布时间】:2014-05-29 06:29:18
【问题描述】:

我正在尝试将我的 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]

但它似乎工作正常。

【问题讨论】:

  • 您能否提供确切的错误消息,当在网络搜索中使用时不会出现任何有用的信息?另外,一些代码怎么样?然后,我相信 unicode 文字未来还提供了 'b' 前缀来显式指定字节字符串,以防万一。
  • 它确实提供了 b'' str 符号来创建文字字符串对象,它确实解决了这个问题。谢谢! (我将编辑这个问题,以便对未来的搜索更有意义)
  • 实际上,让这个问题更适合搜索是一件好事,但我想建议的是,您只需在网络搜索中抛出错误消息本身和“pylint”并检查您的问题是否之前没有回答。
  • 已经做到了。不走运:)

标签: python python-2.7 pylint python-unicode


【解决方案1】:

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

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

【讨论】:

  • 这似乎是社区 wiki 答案的完美案例。 :)
猜你喜欢
  • 2012-12-02
  • 2010-10-03
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 2011-11-30
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多