作過python的人你會發現想要的東西跟它原有的是不一樣的。Python對我來講是真的是這樣。若是能夠的話,對於Python中不少的我想要改的東西,我有不少的想法。如今我向您講述其中一個:類定義的語法。
可是,讓咱們先從定義函數的語法開始。它有一個很是好的特性:函數定義看起來像它們相應的函數調用。函數定義以下:python
def func_name(arg1, arg2):編程
當您調用該函數時,您使用相似的語法:函數名稱和括號中以逗號分隔的參數列表:編程語言
x = func_name(12, 34)函數
只需調整調用中的標點符號,使其與函數定義中的位置一致,就能夠看到arg1爲12,而arg2爲34.很好。另外核心關鍵:python實戰是檢驗學習效果的惟一標準,因此不要偷懶,若是你缺少最新python實戰教程,能夠去小編的python技術扣裙 :易久武起而而流易思 翻譯成數字就能夠找到了,本身去下學習
接下來:讓咱們來看一下如何定義一個帶有基類的類:翻譯
class MyClass(BaseClass, AnotherBase):對象
要建立此類的實例,請使用類的名稱和括號,但如今並行性已經消失。您並無傳遞BaseClass來構造MyClass:blog
my_obj = MyClass(…)教程
若是隻是看一下這個類,您並不知道要向括號中傳入什麼來構造一個MyClass對象。所以「def」和「class」具備很是類似的語法,並且函數調用和對象建立具備很是類似的語法,但在建立對象時,模仿函數調用中能引導您獲得正確結果的寫法,則徹底行不通。圖片
這是專家很容易一眼就帶過的事情。它們習慣於使用神祕的語法,相似的東西在稍不一樣的語境中具備不一樣的含義。並且不少東西在編程語言中是不可避免的:有不少符號,還有更多的概念。必然會有重疊。
可是咱們能夠作得更好。爲何使用看起來像函數調用的括號來表示基類?這裏有一個更好的語法:
class MyClass from BaseClass, AnotherBase:
這不只避免了誤導性的標點符號並行,甚至還借用了咱們用來討論類的英語:MyClass派生自BaseClass和AnotherBase。並且「from」已是Python中的關鍵字。
順便說一下,即便是專家也會偶爾會犯錯誤,將想用」class「的地方寫成了」def「,相似的語法意味着代碼是有效的。回溯以前不會發現錯誤,這可能使人困惑。
我並非要嚴肅地提議改變Python。不是由於這不會更好(或者這會更好),而是由於這樣的改變在晚期是不切實際的。我想它能夠添加成一種替代語法,可是很難肯定,對於初學者來講,爲類提供兩種語法會更好。大家是怎麼認爲的呢?