我想知道python是否有類似c#匿名類特性的東西。為了澄清這一點,這裡有乙個示例c#片段:var foo = new ;
var bar = new ;
foo.equals(bar); // "true"
在python中,我可以想象如下:foo = record(x = 1, y = 2)
bar = record(y = 2, x = 1)
foo == bar # true
具體要求是能夠在表示式上下文中建立具有指定欄位的物件(例如,在lambdas和其他不允許語句的地方可用),而不需要額外的外部宣告,並且能夠通過普通的成員訪問語法foo.bar按名稱訪問各個元件。建立的物件還應該實現按元件名的結構比較(而不是按位置,就像元組那樣)。
特別是:元組不是因為它們的元件沒有命名;類不是因為它們需要宣告;dict不是因為它們有不需要的foo["bar"]語法來訪問元件。
namedtuple不是嗎,因為即使是內聯定義型別,它仍然需要乙個名稱,而且比較是基於位置的,而不是基於名稱的。特別是:def foo(): return namedtuple("foo", "x y")(x = 1, y = 2)
def bar(): return namedtuple("foo", "y x")(x = 1, y = 2)
foo() == bar() # false because fields are compared in order, and not by name
# true would be desired instead
如果需要的話,我知道如何用python編寫這樣的東西。但我想知道在python標準庫或任何流行的第三方庫中是否有類似的東西。
[編輯]
為了方便起見,這裡有乙個單一的表示式解決方案,它結合了ken和alanlcode的兩個非常有用的答案,在沒有任何額外外部宣告的情況下實現了結構平等:type("", (), \
)(x = 1, y = 2)
從技術上講,它滿足了問題的所有要求,但我真誠地希望沒有人使用它(我絕對不會)。
python有多型嗎 Python 多型
python多型 思維導圖 多型概念 一種事物具備多種 不同的形態 例如 水 固態 液態 氣態 官方解釋 多個不同類的物件可以響應同乙個方法,產生不同的結果 首先強調多型不是一種特殊的語法,而是一種狀態 特性 即多個不同物件可以響應同乙個方法,產生不同結果 好處 對於使用者而言,大大的降低了使用難度...
python有棧嗎 Python 棧
棧抽象資料型別由下面的結構和操作定義。棧是元素的有序集合,新增操作與移除操作都發生在其頂端。棧的操作順序是 lifo,它支援以下操作 stack 建立乙個空棧。它不需要引數,且會返回乙個空棧。push item 將乙個元素新增到棧的頂端。它需要乙個引數 item,且無返回值。pop 將棧頂端的元素移...
Python有那麼神嗎?
這個問題其實簡單點說 就是講 python 到底能做什麼?它的優點在哪?資料庫 python在資料庫方面很優秀,可以和多種資料庫進行連線,進行資料處理,從商業型的資料庫到開放原始碼的資料庫都提供支援。例如 oracle,my sql server等等。有多種介面可以與資料庫進行連線,至少包括odbc...