python類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.的問題
self是對實例自己的引用。
self.a()的意思是"調用自己的過程a"。
試想,有定義一個函數a,同時,類中也有過程a,要區分兩者,在類中就要通過是否使用self前綴來區分,在外部就要通過是否有實例名來區分。
參考以下代碼:
Ⅳ 我解釋一下python的類方法為什麼要寫一個self參數
類(class)初始化之後會得到實例(instance)。
self就是用於代表初始化的到的實例。
明確地寫一個self參數,使得類的方法(method)和普通的函數(function)本質上沒有差異,所有的輸入參數都顯示地傳遞到方法/函數當中。
當然作為類的方法,作用的對象一定會是實例,因而在Python的設計之初,完全可以設計成self不作為一個參數,但是那樣就需要一個關鍵字代表實例,比如在javascript中就是this。
然而Python的哲學是"Explicit
is
better
than
implicit.",顯示要比隱示好,因此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
python中的self就相當於c++中的this指針
也就是指向對象本身的指針
self.name
=
name
就是當前對象的成員變數name賦值為name。
Ⅶ python中self是什麼
python中的self就相當於C++中的this指針
也就是指向對象本身的指針
self.name = name 就是當前對象的成員變數name賦值為name。
Ⅷ python 類 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能避免非限定調用造成的全局變數。