第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

同類對象集的Python類

同類對象集的Python類

桃花長相依 2021-03-24 17:14:58
我經常發(fā)現自己創(chuàng)建了同類對象,通常將它們存儲在字典或字典列表中。   a,b,c = MyClass(...), MyClass(...), MyClass(...)    my_set = {'a':a,'b':b,'c':c}在這樣的背景下,共同的需求是從對象的屬性或方法返回同類集{k:k.prop for k in my_set} , 或者{k:k.func() for k in my_set}根據屬性或對象方法的輸出進行過濾{k:k.prop for k in my_set if k.prop is blah} , 或者{k:k.func() for k in my_set if k.func() is blah}將前兩個需求放在一起起初,這似乎表明我應該使用數據庫。但是,我將不得不放棄使用任意對象作為元素所提供的自由。id喜歡為此類型的結構創(chuàng)建一個類(如果尚不存在),則可以通過以下方式滿足這些需求:a,b,c = MyClass(...), MyClass(...), MyClass(...)   my_set = {'a':a,'b':b,'c':c}   my_set.prop # fufills first need   my_set.func() # fufills first need   my_set[prop = blah] # fufills second need   my_set[prop= blah].prop.func() # third need是否存在這樣的功能?還是對這個對象的需求是不良設計的結果?
查看完整描述

4 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

您正在尋找類的特殊方法??纯?__getattr__和__getitem__。您可以編寫自己的課程。它的這一類的實例可以有 a,b并c作為屬性,可以做你的描述。


這樣的事情可能會做部分您想做的事情:


class DictCollcetion(object):

    def __init__(self, dict_):

        self.dict = dict_

    def __getattr__(self, name):

        return {k: k.name for k in self.dict}

    def __getitem__(self, key):

        return {k: k.key for k in self.dict}


查看完整回答
反對 回復 2021-03-30
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

您是否考慮過僅使用集合?


my_set = {myclass(...),myclass(...),myclass(...)}

props = {k.prop for k in my_set}

雖然您可以創(chuàng)建一個為您完成映射的類,但對我而言,這并不比堅持使用標準映射結構更清楚您的代碼。


查看完整回答
反對 回復 2021-03-30
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

我遇到過像我一樣操縱大量字典或對象的情況。通常,這些對象會從數據庫中提取出來,并通過ORM進行填充,但我也使用CSV文件來完成。

我不確定我的需求是否足夠頻繁/常見,我是否會尋找一個模塊來為其提供語法糖。


查看完整回答
反對 回復 2021-03-30
  • 4 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號