亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

是否有一種 Pythonic 方式來引用我們用(某些)Python 內置類型聲明的當前對象?

是否有一種 Pythonic 方式來引用我們用(某些)Python 內置類型聲明的當前對象?

PHP
大話西游666 2023-11-09 10:11:43
使用(某些)Python 內置類型,是否可以引用我們正在聲明的對象?通過“(某些)內置類型”,我想到的是序列類型、映射類型或集合類型,顯然不是數字類型。我的意思是,無需自己創建類并添加此功能(無需創建子類)。因此,類似于this下面示例中使用的關鍵字。例如,對于“dict”Python 內置類型,如下所示:a_dictionary = {    "key_1": "value_1",    "key_2": "value_2",    "key_3": this["key_1"] + "_" + this["key_2"] # == "value_1_value_2"}甚至:a_dictionary = {    "sub_dict_1": {        "key_1": "value_1_1",        "key_2": "value_1_2",        "key_3": this["key_1"] + "_" + this["key_2"] # == "value_1_1_value_1_2"    },    "sub_dict_2": {        "key_1": "value_2_1",        "key_2": "value_2_2",        "key_3": this["key_1"] + "_" + this["key_2"] # == "value_2_1_value_2_2"    }}
查看完整描述

2 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

Python 沒有提供通過文字或顯示* 來引用正在構造的對象的方法。您可以(ab)使用Python 3.8或更高版本中的賦值表達式來模擬這一點:


a_dictionary = {

    "key_1": (x := "value_1"),

    "key_2": (y := "value_2"),

    "key_3": x + "_" + y 

}

它需要提前進行一些規劃,因為您不是直接引用鍵值,而是引用預定義的變量。請注意,在分配給 后,x和仍保留在范圍內,因此這只是一個有問題的等價物ya_dictionary


x = "value_1"

y = "value_2"

a_dictionary = {

    "key_1": x,

    "key_2": y,

    "key_3": x + "_" + y

}

自定義類確實更合適:


class Thing:

    def __init__(self, v1, v2):

        self.key_1 = v1

        self.key_2 = v2

        self.key_3 = v1 + "_" + v2



a_thing = Thing("value_1", "value_2")

顯示是類似于文字的構造,但可以包含非文字引用。例如,列表顯示包括[1, x, y]和[int(x) for x in foo]。


查看完整回答
反對 回復 2023-11-09
?
吃雞游戲

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

經過一番挖掘,并且僅針對字典的情況,我發現了其他解決方法,基于當我需要自引用字典時我該怎么做?:

class MyDict(dict):

? ? def __getitem__(self, item):

? ? ? ? return dict.__getitem__(self, item).format(self)


a_dictionary = MyDict({

? ? "key_1": "value_1",

? ? "key_2": "value_2",

? ? "key_3": "{0[key_1]}" + "_" + "{0[key_2]}" # == "value_1_value_2"

})


查看完整回答
反對 回復 2023-11-09
  • 2 回答
  • 0 關注
  • 201 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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