亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

為什么從類內(nèi)部訪問類變量需要“自我”。在Python中?

瀏覽:5日期:2022-08-07 10:57:57
如何解決為什么從類內(nèi)部訪問類變量需要“自我”。在Python中??

摘自Python歷史:添加對用戶定義類的支持:

相反,我決定放棄隱式引用實(shí)例變量的想法。諸如C ++之類的語言使您可以編寫this->foo來顯式引用實(shí)例變量foo(以防存在單獨(dú)的局部變量foo)。因此,我決定將此類顯式引用作為引用實(shí)例變量的唯一方法。另外,我決定將當(dāng)前對象(“this”)作為一個特殊的關(guān)鍵字,而不是簡單地將“ this”(或其等效)作為第一個命名參數(shù)。實(shí)例變量總是總是被引用為該參數(shù)的屬性。

使用顯式引用,不需要為方法定義使用特殊的語法,也不必?fù)?dān)心與變量查找有關(guān)的復(fù)雜語義。取而代之的是,僅定義一個函數(shù),該函數(shù)的第一個參數(shù)與實(shí)例相對應(yīng),按照慣例,該實(shí)例稱為“self”。例如:

def spam(self,y): print self.x, y

這種方法類似于我在Modula-3中看到的方法,該方法已經(jīng)為我提供了導(dǎo)入和異常處理的語法。Modula-3沒有類,但是它允許您創(chuàng)建包含完全類型化函數(shù)指針成員的記錄類型,這些成員默認(rèn)情況下初始化為附近定義的函數(shù),并添加語法糖,以便如果x是這樣的記錄變量,而m是一個該記錄的函數(shù)指針成員,初始化為函數(shù)f,然后調(diào)用xm(args)等效于調(diào)用f(x,args)。這與對象和方法的典型實(shí)現(xiàn)相匹配,并使得可以將實(shí)例變量與第一個參數(shù)的屬性等同起來。

因此,由BDFL自己說,他決定使用顯式自我而不是隱式自我的唯一真實(shí)原因是:

這是明確的由于查找必須在運(yùn)行時完成(而不是像其他語言一樣在編譯時進(jìn)行),并且具有隱式自身,可能會增加查找的復(fù)雜性(并因此增加成本),因此它更易于實(shí)現(xiàn)。

編輯:Python FAQ中也有一個答案。

解決方法

我正在學(xué)習(xí)Python,對于這個類的方法中的訪問類變量,我有一個比理論更實(shí)際的問題。

例如,我們有:

class ExampleClass: x = 123 def example_method(self):print(self.x)

為什么一定要準(zhǔn)確地寫self.x,而不僅僅是寫x?x屬于類的名稱空間,使用它的方法也屬于該名稱空間。我想念什么?這種風(fēng)格背后的原理是什么?

在C ++中,您可以編寫:

class ExampleClass {public: int x; void example_method() {x = 123;cout << x; };};

它將起作用!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产精品久久久精品视频 | 国内精品视频一区二区三区八戒 | 777精品视频| 伊人网亚洲 | 9l国产精品久久久久麻豆 | 久久久国产精品免费 | 亚洲国产精品v在线播放 | 三及黄色片 | 91嫩草国产在线观看免费 | 国产男女性做爽歪歪爱视频 | 美国一级毛片∞ | 小明台湾成人永久免费看看 | 免费一级乱子伦片 | 不卡国产 | 国产精品久久久久影院色老大 | 久久制服诱惑 | 久久五月激情婷婷日韩 | 久久日本精品国产精品白 | 成人亚洲欧美日韩中文字幕 | 国产精品一国产精品免费 | 国产一区二区精品久久凹凸 | 道日本一本草久 | 国产三级日本三级在线播放 | 男人狂躁女人下面视频免费看 | 日本九九精品一区二区 | 国产麻豆视频免费观看 | 国产成+人+综合+欧美 亚洲 | 樱花草在线社区www韩国 | 精品91自产拍在线观看99re | 亚洲欧洲视频 | 高清不卡一区 | 免费观看69xxx视频在线 | 日本一级网站 | 美女天堂网| 欧美 日韩 亚洲另类专区 | 五月综合色婷婷 | 真人毛片 | 草逼免费视频 | 欧美一级毛片在线看视频 | 欧美日韩国产综合视频在线看 | 国产剧情麻豆mv在线观看 |