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