當前位置:首頁 » 編程語言 » python函數參數self

python函數參數self

發布時間: 2022-07-21 05:10:45

❶ 為什麼python在類下定義函數要用self參數

一棟樓上所有房間都長的一毛一樣,在樓外面,你能分清是哪個房間,可一旦進入樓裡面,你就無法分清是304,還是406號房,而self就是這個門牌號。在程序中,它表明調用方法的對象是誰!

❷ python3 中定義類函數參數中加 self 和不加的區別在哪

self是需要在類中使用的,你如果不加,你在這個類成員函數就是靜態方法,無法直接調用類中的方法以及成員,需要構造一個類實例,self免去了你自己構造類實例。

❸ python中的self如何理解呢

類的方法與普通的函數只有一個特別的區別--它們必須有一個額外的第一個參數名稱,但是在調用這個方法的時候你不為這個參數賦值,Python會提供這個值.這個特別的變數指對象本身,按照慣例它的名稱是self.
雖然你可以給這個參數任何名稱,但是 強烈建議 你使用self這個名稱--其他名稱都是不贊成你使用的.使用一個標準的名稱有很多優點--你的程序讀者可以迅速識別它,如果使用self的話,還有些IDE(集成開發環境)也可以幫助你.
=======================================================給C++/java/C#程序員的注釋
Python中的self等價於C++中的self指針和Java、C#中的this參考.
=======================================================你一定很奇怪Python如何給self賦值以及為何你不需要給它賦值.舉一個例子會使此變得清晰.假如你有一個類稱為MyClass和這個類的一個實例MyObject.當你調用這個對象的方法MyObject.method(arg1, arg2)的時候,這會由Python自動轉為MyClass.method(MyObject, arg1, arg2)--這就是self的原理了.
這也意味著如果你有一個不需要參數的方法,你還是得給這個方法定義一個self參數.
我這里補充一下幾個實常式序以加深理解: class Person:
def sayHi(self):
print 'Hello,how are you?'p=Person()
p.sayHi()結果顯示為:
Hello,how are you?

❹ Python為什麼要self

晚上特別針對Python的self查了一下,理理。Python要self的理由Python的類的方法和普通的函數有一個很明顯的區別,在類的方法必須有個額外的第一個參數
(self
),但在調用這個方法的時候不必為這個參數賦值
(顯勝於隱
的引發)。Python的類的方法的這個特別的參數指代的是對象本身,而按照Python的慣例,它用self來表示。(當然我們也可以用其他任何名稱來代替,只是規范和標准在那建議我們一致使用self)為何Python給self賦值而你不必給self賦值?例子說明:創建了一個類MyClass,實例化MyClass得到了MyObject這個對象,然後調用這個對象的方法MyObject.method(arg1,arg2)
,這個過程中,Python會自動轉為Myclass.mehod(MyObject,arg1,arg2)這就是Python的self的原理了。即使你的類的方法不需要任何參數,但還是得給這個方法定義一個self參數,雖然我們在實例化調用的時候不用理會這個參數不用給它賦值。實例:class
Python:
def
selfDemo(self):
print
'Python,why
self?'p
=
Python()p.selfDemo()輸出:Python,why
self?把p.selfDemo()帶個參數如:p.selfDemo(p),得到同樣的輸出結果如果把self去掉的話,
class
Python:
def
selfDemo():
print
'Python,why
self?'p
=
Python()p.selfDemo()這樣就報錯了:TypeError:
selfDemo()
takes
no
arguments
(1
given)擴展self在Python里不是關鍵字。self代表當前對象的地址。self能避免非限定調用造成的全局變數。

❺ python類中self的問題

原因都出在第4行這句: test3.count += 1 #!!!注意此處不是self.count
你每運行一次 init() 函數 count 就會累加一
注意 你累加的是 test3.count 而不是 self.count
所以 運行了三次 init() 函數 的輸出是 1 2 3
如果 你累加的是 self.count 就會輸出三次 1 1 1
***首先要理解上面所說的 再繼續看下面的***
既然如此 print(cc3.count,cc4.count) #返回2,2 就是正確的
cc3.count 指向的 test3().count 輸出的是 2 沒異議是吧
cc4.count 指向的也是 test3().count 為什麼不是 2 都是同一個東西
print(cc3.count,cc4.count) #返回3,6
前面第一個3 就不用多說了
後面的第二個6 是因為你 cc4.count=6 這句指定了他是6
比如 a = 6 輸出a會是什麼? 當然是6啊

❻ python中self是什麼意思

題主可以學習一下面向對象編程的一般知識。
概括的說,主流的支持面向對象編程的語言(Java, python等)關於「類」的定義是很接近的。類要有一個構造函數(python里就是__init__,Java里是與類同名且無返回值的一個方法),在生成對象時會自動調用。然後為了方便在類的方法中引用當前對象,就引入了一些關鍵字(python里是self,Java里是this)。所以self並不是程序員自己定義的,而是語言本身內建支持的。
關於self,由於python的語法確實比較奇特,看起來好像self是一個普通參數,但實際並非如此。
關於構造函數,如果題主沒有感覺到其存在的必要性,不必在意,不過要記住有這樣一個語法。等以後遇到有需求的時候自然就明白了。

❼ 我解釋一下python的類方法為什麼要寫一個self參數

類(class)初始化之後會得到實例(instance)。
self就是用於代表初始化的到的實例。
明確地寫一個self參數,使得類的方法(method)和普通的函數(function)本質上沒有差異,所有的輸入參數都顯示地傳遞到方法/函數當中。
當然作為類的方法,作用的對象一定會是實例,因而在Python的設計之初,完全可以設計成self不作為一個參數,但是那樣就需要一個關鍵字代表實例,比如在javascript中就是this。
然而Python的哲學是"Explicit
is
better
than
implicit.",顯示要比隱示好,因此Python類的方法需要一個self參數代表實例是符合邏輯的。

❽ python中self是什麼

python中的self就相當於C++中的this指針
也就是指向對象本身的指針
self.name = name 就是當前對象的成員變數name賦值為name。

熱點內容
如何讓給文件夾設置密碼查看 發布:2025-01-31 22:49:07 瀏覽:2
配置動態路由協議配錯了怎麼改 發布:2025-01-31 22:49:07 瀏覽:77
掃行程碼為什麼需要支付密碼 發布:2025-01-31 22:47:08 瀏覽:738
什麼樣的配置能玩地平線4 發布:2025-01-31 22:44:05 瀏覽:241
python正則表達式符號 發布:2025-01-31 22:43:50 瀏覽:391
androidmime 發布:2025-01-31 22:34:44 瀏覽:782
ftp和http的中文含義是 發布:2025-01-31 22:33:48 瀏覽:402
sqlite3存儲圖片 發布:2025-01-31 22:27:14 瀏覽:162
sqlserverphp 發布:2025-01-31 22:22:55 瀏覽:877
曲馬多存儲 發布:2025-01-31 22:22:52 瀏覽:538