代码改编自 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'

特别令人失望,因为源代码指出:



如何解决这个问题?

轻松修复:
return str.join('.', map(class_.capitalize, string.split('_')))

谁能给我解释一下整个过程?

最佳答案

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

#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”(注意一个点)的东西。

关于python - 描述符 'join' 需要 'unicode' 对象,但收到了 'str',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13575879/

10-16 01:50