【问题标题】:descriptor 'join' requires a 'unicode' object but received a 'str'描述符“join”需要一个“unicode”对象但收到一个“str”
【发布时间】:2012-11-27 01:03:38
【问题描述】:

代码改编自here:

#from 'foo_bar' to 'Foo.Bar'
def lower_case_underscore_to_camel_case(self, string):
  print string
  class_ = string.__class__
  return class_.join('.', map(class_.capitalize, string.split('_')))

输出:

client_area
TypeError: descriptor 'join' requires a 'unicode' object but received a 'str'

特别令人失望,因为源代码声明:

"""将字符串或unicode从小写下划线转换为驼峰式"""

如何解决这个问题?


简单修复:

return str.join('.', map(class_.capitalize, string.split('_')))

谁能解释一下整个过程?

【问题讨论】:

  • 您刚刚介绍的“简单修复”实际上并不是修复。您不了解流程的哪一部分?

标签: python


【解决方案1】:

代码似乎引入了不必要的复杂性,但您可以这样做:

#from 'foo_bar' to 'FooBar'
def lower_case_underscore_to_camel_case(self, string):
  print string
  class_ = string.__class__
  return class_.join(class_('.'), map(class_.capitalize, string.split('_')))

你实际上可以将最后一行缩短为:

return class_('.').join(map(class_.capitalize, string.split('_')))

此外,从代码来看,您会从“foo_bar”收到类似“Foo.Bar”(注意一个点)的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多