在 Python 領域:
除了組織代碼/設計模式之外,類可以做什么而函式不能做什么?
技術上不能通過函式撰寫任何類嗎?并不是說它會更高效或更可讀,而是就純功能而言。
換種說法,有人可以選擇任何課程并僅使用函式重寫它嗎?
uj5u.com熱心網友回復:
我能想到的唯一一個主要獨特的、常用的特性是類可以是多型的,并且類可以使用運算子多載。
使用閉包作用域的嵌套函式可以完成類所做的大部分有狀態屬性的事情,通過讓每個閉包充當“實體”,在該閉包作用域中定義的函式有點像方法,所以從這個意義上說,你可以使用共享持久狀態的“方法”撰寫非常丑陋的代碼。
但是運行時動態多型不是一個選項(您可以選擇不同的函式來回傳關閉共享狀態,但它不會讓您以任何理智的方式擁有多型擴展)。
您也無法模擬多載運算子的現有型別;運算子多載必須在型別上完成,而不是在實體上完成,并且所有用戶定義的函式共享一個型別,不允許你多載額外的運算子。
需要明確的是,有事情可以被類做更好用的功能來完成。特別是,撰寫自己的可迭代和成對的迭代器類是一件痛苦的事情,但是生成器函式可用于制作根本沒有類的迭代器,或者__iter__無需撰寫令人難以置信的丑陋的用戶定義的可迭代的迭代器類。基本上,它們都存在,使用明顯適合手頭情況的那個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/318182.html
標籤:Python
