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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Python中的實(shí)例變量與類變量

Python中的實(shí)例變量與類變量

有只小跳蛙 2019-12-22 20:20:51
Python中的實(shí)例變量與類變量我有Python類,其中我在運(yùn)行時(shí)只需要一個(gè)實(shí)例,因此每個(gè)類只有一次屬性就足夠了,而不是每個(gè)實(shí)例。如果存在多個(gè)實(shí)例(不會(huì)發(fā)生),則所有實(shí)例都應(yīng)具有相同的配置。我想知道以下哪個(gè)選項(xiàng)會(huì)更好或更“慣用”P(pán)ython。類變量:class MyController(Controller):   path = "something/"   children = [AController, BController]   def action(self, request):     pass實(shí)例變量:class MyController(Controller):   def __init__(self):     self.path = "something/"     self.children = [AController, BController]   def action(self, request):     pass
查看完整描述

3 回答

?
慕姐4208626

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

如果你只有一個(gè)實(shí)例,那么最好每個(gè)實(shí)例創(chuàng)建所有變量,只是因?yàn)樗鼈儠?huì)被訪問(wèn)(一點(diǎn)點(diǎn))更快(由于從類到實(shí)例的“繼承”,一個(gè)更少的“查找”級(jí)別),并且沒(méi)有任何缺點(diǎn)可以衡量這個(gè)小優(yōu)勢(shì)。


查看完整回答
反對(duì) 回復(fù) 2019-12-23
?
翻過(guò)高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊

進(jìn)一步回應(yīng)邁克和亞歷克斯的建議并添加我自己的顏色......

使用實(shí)例屬性是典型的,更慣用的Python。類屬性不常使用 - 至少在我連續(xù)13年的Python中沒(méi)有生產(chǎn)代碼。對(duì)于靜態(tài)和類方法也是如此...除非有特定的用例或異常的程序員想要炫耀他們知道Python編程的一些不起眼的角落,否則不是很常見(jiàn)。

alex在他的回復(fù)中提到,由于一個(gè)較少的查找級(jí)別,訪問(wèn)速度會(huì)快一點(diǎn)點(diǎn)...讓我進(jìn)一步澄清那些不知道它是如何工作的人,它與變量訪問(wèn)非常相似 - - 按此順序搜索:

  1. 當(dāng)?shù)厝?/p>

  2. nonlocals

  3. 全局

  4. 內(nèi)置插件

對(duì)于屬性訪問(wèn),順序是:

  1. 由MRO確定的基類(方法解析順序)

在上面的示例中,假設(shè)您正在查找path屬性。當(dāng)遇到像“ self.path” 這樣的引用時(shí),Python會(huì)首先查看實(shí)例屬性以獲得匹配; 當(dāng)失敗時(shí),它會(huì)檢查從中實(shí)例化對(duì)象的類。最后,它將搜索基類。正如亞歷克斯所說(shuō),如果在實(shí)例中找到你的屬性,它就不會(huì)順從類,因此節(jié)省了一點(diǎn)時(shí)間。

但是,如果你堅(jiān)持使用類屬性,你將不得不放棄這一點(diǎn)性能,或者,你的另一種選擇是通過(guò)類而不是實(shí)例引用對(duì)象,例如,MyController.path而不是self.path。這是一個(gè)直接查找,它將繞過(guò)延遲查找,但正如alex提到的那樣,這是一個(gè)全局變量,所以你會(huì)丟失那個(gè)你認(rèn)為要保存的位(除非你創(chuàng)建一個(gè)對(duì)[global]類名的本地引用)。



查看完整回答
反對(duì) 回復(fù) 2019-12-23
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

如有疑問(wèn),您可能需要實(shí)例屬性。

類屬性最好保留用于有意義的特殊情況。唯一非常常見(jiàn)的用例是方法。對(duì)于實(shí)例需要知道的只讀常量,使用類屬性并不罕見(jiàn)(盡管這樣做的唯一好處就是如果你也希望從類外部進(jìn)行訪問(wèn)),但你應(yīng)該謹(jǐn)慎地將任何狀態(tài)存儲(chǔ)在它們中,這很少是你想要的。即使您只有一個(gè)實(shí)例,也應(yīng)該像編寫(xiě)其他任何實(shí)例一樣編寫(xiě)類,這通常意味著使用實(shí)例屬性。


查看完整回答
反對(duì) 回復(fù) 2019-12-23
  • 3 回答
  • 0 關(guān)注
  • 297 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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