0
“第一类”概念是否可以应用于Python方法/属性,就像它可以起作用?你可以在Python方法/属性上使用“第一类”概念吗?
>>>a=sum
>>>a([1,2,3])
6
我想这样做:
>>>case='lower'
>>>'UPPERCASE'.case()
要产生字符串对象'uppercase'
。否则,我只需要使用eval
?
“第一类”概念是否可以应用于Python方法/属性,就像它可以起作用?你可以在Python方法/属性上使用“第一类”概念吗?
>>>a=sum
>>>a([1,2,3])
6
我想这样做:
>>>case='lower'
>>>'UPPERCASE'.case()
要产生字符串对象'uppercase'
。否则,我只需要使用eval
?
你可以这样来做:
case = str.lower # Take the lower() method of the str class.
case('UPPERCASE') # pass your string as the first argument, which is self.
在这种情况下,巨蟒是明确有关self
作为第一个参数的方法使这是一个更加清晰明白。
当然; 'getattr('UPPERCASE',case)()'会给出'大写'(参见例如http://stackoverflow.com/q/2612610/3001761)。请注意,您的示例并不等同,但是;在第一个分配函数本身,在第二个分配方法的*名称*。更合适的可能是'case = str.lower',那么你想'case('UPPERCASE')'。 – jonrsharpe
那么你肯定不能添加/改变字符串对象的方法,如果你是子类'str',那么你可以在类定义中定义'case = str.lower',然后'MyStr('UPPERCASE')。case() - >'uppercase'' –
什么“一流”概念正好意味着什么? – mhbashari