描述符'加入'需要一个'unicode'对象,但收到了一个' str'

时间:2012-11-27 01:03:39

标签: python

代码改编自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从小写下划线转换为camel-case”“”

如何解决这个问题?


轻松修复:

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

有人可以向我解释整个过程吗?

1 个答案:

答案 0 :(得分:3)

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

#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”(注意点)。