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

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

分配變量時將變量名稱分配給對象

分配變量時將變量名稱分配給對象

明月笑刀無情 2021-12-17 16:36:57
在python中,變量有名字而對象沒有(因?yàn)槎鄠€變量可以指向同一個對象)但是有沒有辦法在將name對象分配給變量時添加/修改對象的屬性。理想情況下,可以這樣工作:spam = MagicObject()print(spam.name) # output: "spam"ham = spamprint(spam.name) # output: "ham"編輯:事實(shí)上,我真的不介意第二次打印是“火腿”還是“垃圾郵件”,因?yàn)槲艺娴牟淮蛩阍谕粋€對象上放置多個變量。我只希望對象在任何情況下都有一個名稱。我的想法是盡可能少寫一些參數(shù)文件。所以這個簡單的代碼:person_id = PrimaryKey()將創(chuàng)建一個 PrimaryKey 對象并自動將其命名為“person_id”
查看完整描述

2 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個贊

我認(rèn)為這最接近你想要做的事情。這是效率低,濫用globals和properties。此外,如果MagicObject它很復(fù)雜,則需要實(shí)施__eq__(并且可能__hash__也是如此)。


這是一個hack,可能不應(yīng)該在生產(chǎn)中使用。


 class MagicObject:

    @property

    def name(self):

        return [k for k, v in globals().items() if v == self]


a = MagicObject()

print(a.name)

b = a

print(a.name)

c = a

print(a.name)

del b

print(a.name)

輸出


['a']

['a', 'b']

['a', 'b', 'c']

['a', 'c']

還要記住,在 Python < 3.7 中,列表的順序是任意的,因?yàn)樽值錄]有順序。


查看完整回答
反對 回復(fù) 2021-12-17
?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個贊

看起來你想寫一個 ORM。兩個建議:

  • 別。例如,使用一個已經(jīng)編寫好的 SQLAlchemy。

  • 如果您正在做其他事情,或者您真的想進(jìn)入那個兔子洞,請檢查這些 ORM 是如何做到的,最有可能是使用 MetaClass。


查看完整回答
反對 回復(fù) 2021-12-17
  • 2 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號