2017-03-17 79 views
-1

爲什麼我們無法將方法或類名定義爲字符串?爲什麼我們無法將方法或類名稱定義爲字符串?

我試圖在方法名稱中使用&,在正常的命名被扔的錯誤,所以我想在一個字符串使用方法名稱,比如爲:

def 'order_date_&_time'(self, obj): 
     return obj.created_at 

但它再次展示了另一個錯誤( SyntaxError:無效的語法)。

So Why i can not define method or class name as a string ?

+0

由於編譯器期望**標識符**,而不是**字符串文字** ....你會如何調用該方法?像''命令'(1)'?那麼如果一個字符串本身可以被調用呢? –

+0

爲什麼你要使用&符號而不是普通的英文單詞(對於標識符)? '&'在Python中具有特殊含義(按位與),並且使用整個單詞被認爲更清晰 – UnholySheep

+0

因爲語言規範說明了這一點。所有我知道的語言都有它們標識符的詞彙規則,我只是假設它應該有一個很好的理由 - 我知道原因,源代碼必須被解析,解析器需要標識符的詞法定義。你可以嘗試構建一種接受任何字符串作爲其標識符的語言,但運氣好,因爲解析肯定會*有趣* ... –

回答

3

函數名稱需要遵循與標識符相同的語法。 Python中的標識符遵循一定的規則,不允許標識符以諸如'等符號開頭。接受的標識符形式在相應的section of the reference manual.

中明確定義您不能這樣做,因爲爲標識符定義的語法規則不允許,因此很簡單。

標識符的含義是可讀的,這就是爲什麼字符如&不被允許。

相關問題