2017-05-28 127 views
2

在Python中,如何獲得函數的名稱作爲字符串?如何獲取函數的名稱作爲字符串?

我想將str.capitalize()函數的名稱作爲字符串。看起來該函數具有__name__屬性。當我做

print str.__name__ 

我得到這個輸出,符合市場預期:

str 

但是當我運行str.capitalize().__name__我得到一個錯誤,而不是讓名稱爲「利用」的。

> Traceback (most recent call last): 
> File "string_func.py", line 02, in <module> 
> print str.capitalize().__name__ 
> TypeError: descriptor 'capitalize' of 'str' object needs an argument 

同樣,

greeting = 'hello, world' 
print greeting.capitalize().__name__ 

給出了這樣的錯誤:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'str' object has no attribute '__name__' 

出了什麼問題?

+0

這有什麼錯'str.capitalize .__ name__'或'greeting.capitalize。 __name__'? –

+0

返回錯誤 –

+0

如果你想要變量的名字,你必須單獨發現它https://stackoverflow.com/questions/2553354/how-to-get-a-variable-name-as-a-string python –

回答

11

greeting.capitalize是一個函數對象,該對象具有您可以訪問的.__name__屬性。但是greeting.capitalize()調用函數對象並返回大寫版本的greeting字符串,並且該字符串對象沒有.__name__屬性。 (但即使它確實有.__name__,它也會是字符串的名稱,而不是用於創建字符串的函數的名稱)。你不能這樣做str.capitalize(),因爲當你調用「原始」str.capitalize函數時,你需要傳遞一個字符串參數,它可以利用它。

所以,你需要做的

print str.capitalize.__name__ 

print greeting.capitalize.__name__ 
4

讓我們從錯誤中

Traceback (most recent call last):
File "", line 1, in
AttributeError: 'str' object has no attribute 'name'

具體啓動

AttributeError: 'str' object has no attribute 'name'

您正在嘗試

greeting = 'hello, world' 
print greeting.capitalize().__name__ 

這將充分hello world並返回一個字符串。

由於錯誤狀態,string沒有attribute _name_

capitalize()將立即執行的功能和使用的結果,而capitalize將代表功能。

如果你想看到在JavaScript一種變通方法,

檢查下面的代碼片段

function abc(){ 
 
    return "hello world"; 
 
} 
 

 
console.log(typeof abc); //function 
 
console.log(typeof abc());

所以,不執行。

只需使用

greeting = 'hello, world' 
print greeting.capitalize.__name__ 
1

你不需要調用這個函數,只需使用

>>> str.capitalize.__name__ 
相關問題