国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

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

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

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

使用顯式引用,不需要為方法定義使用特殊的語法,也不必擔心與變量查找有關的復雜語義。取而代之的是,僅定義一個函數,該函數的第一個參數與實例相對應,按照慣例,該實例稱為“self”。例如:

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

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

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

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

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

解決方法

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

例如,我們有:

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

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

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

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

它將起作用!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 91免费版网站 | 九九精品免视频国产成人 | 美女张开大腿让男人桶 | 99在线视频网站 | 久久免费视频网站 | 男女在线免费视频 | 亚洲视频免 | 欧美成人一区二区三区在线视频 | 国产成在线观看免费视频 | 男女视频免费在线观看 | 久草男人天堂 | 一本久道久久综合婷婷五 | 三级黄色片在线免费观看 | 欧美日韩精品在线播放 | 天堂中文资源在线8 | 亚洲三级a| 狠狠色丁香婷婷综合久久片 | 亚洲aⅴ男人的天堂在线观看 | 亚洲日本在线观看网址 | 91久久综合九色综合欧美98 | 一个人看的www日本高清视频 | 亚洲欧美一区二区三区 | 成人a毛片免费视频观看 | 日本乱理伦片在线观看网址 | 在线观看免费视频国产 | 亚洲欧洲日产v特级毛片 | 国产一区二区三区美女在线观看 | 日韩欧美理论片 | 亚洲第一在线播放 | 一男一女的一级毛片 | 失禁h啪肉尿出来高h健身房 | 亚洲高清无在码在线无弹窗 | 亚洲不卡在线 | 国产乱子伦片免费观看中字 | 国产在线精品香蕉综合网一区 | 国产自在自线午夜精品视频在 | 亚洲成在人 | 九九视频免费精品视频免费 | 欧美透逼| 国产欧美一区二区三区精品 | 97公开免费视频 |