3

从这里改编的代码:

#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('_')))

谁能解释一下整个过程?

4

1 回答 1

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

于 2012-11-27T01:08:07.807 回答