2016-07-11 37 views
0

“第一类”概念是否可以应用于Python方法/属性,就像它可以起作用?你可以在Python方法/属性上使用“第一类”概念吗?

>>>a=sum 
>>>a([1,2,3]) 
6 

我想这样做:

>>>case='lower' 
>>>'UPPERCASE'.case() 

要产生字符串对象'uppercase'。否则,我只需要使用eval

+2

当然; 'getattr('UPPERCASE',case)()'会给出'大写'(参见例如http://stackoverflow.com/q/2612610/3001761)。请注意,您的示例并不等同,但是;在第一个分配函数本身,在第二个分配方法的*名称*。更合适的可能是'case = str.lower',那么你想'case('UPPERCASE')'。 – jonrsharpe

+0

那么你肯定不能添加/改变字符串对象的方法,如果你是子类'str',那么你可以在类定义中定义'case = str.lower',然后'MyStr('UPPERCASE')。case() - >'uppercase'' –

+0

什么“一流”概念正好意味着什么? – mhbashari

回答

0

你可以这样来做:

case = str.lower # Take the lower() method of the str class. 
case('UPPERCASE') # pass your string as the first argument, which is self. 

在这种情况下,巨蟒是明确有关self作为第一个参数的方法使这是一个更加清晰明白。

相关问题