python參數self
㈠ python 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參數。
聲明add()方法時,若不加self,則提示
TypeError: add() takes exactly 2 arguments (3 given)
File "D:\PythonWorkplace\PythonDemo\Tet.py", line 15, in <mole>
test.add(1,3)
錯誤。
拓展一下:
self在Python里不是關鍵字。self代表當前對象的地址。self能避免非限定調用造成的全局變數。
self是一種習慣,如上面的程序,把sayHi(self)換成sayHi(fles),同樣可以得到正確的輸出。
㈡ python中self是什麼
python中的self就相當於C++中的this指針
也就是指向對象本身的指針
self.name = name 就是當前對象的成員變數name賦值為name。
㈢ 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中this嗎
python的self就與c++、java的this相同,是實例的引用。 只不過python的語法,需要把self放在類實例方法的第一個參數而已。
㈤ Python中的self有啥用 self.name=name這句話有啥作用
self是對「對象」自身的引用。相當於c++中的this。python中self在類的方法中必須以傳入參數寫在函數的參數列表中。它實際上是指向類的對象的一個類似於C++中指針的私有變數。
python規定:訪問類成員時,需要在前面加上this。這里,this.name = name表示為Person類添加了屬性name。
如果變數前不加this,則視為局部變數。這個變數會在方法運行結束後失效。而屬性在整個類的范圍內都是有效的。
self是只有在類中才會有的。self在定義類的方法時是必須有的,雖然在調用時不必傳入相應的參數。
(5)python參數self擴展閱讀:
1、if 語句
1)基本用法:
if 要判斷的條件:條件成立的時候,要做的事情
else:條件不成立的時候,要做的事情
if和else語句以及各自的縮進部分都是一個完整的代碼塊
2、if 邏輯運算
and:
# 條件1 and 條件2
# 兩個條件同時滿足,就返回True
# 兩個條件都不滿足,返回False
㈥ 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
晚上特別針對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能避免非限定調用造成的全局變數。