當前位置:首頁 » 編程語言 » python中self

python中self

發布時間: 2023-03-12 00:16:42

python中self是什麼

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

② Python的類中引用成員變數必須加self嗎

Python的類中引用成員變數必須加self
類(class)初始化之後會得到實例(instance)。 self就是用於代表初始化的到的實例。 明確地寫一個self參數,使得類的方法(method)和普通的函數(function)本質上沒有差異,所有的輸入參數都顯示地傳遞到方法/函數當中。 當然作為類的方法,作用的對.

self是只有在類中才會有的。self在定義類的方法時是必須有的,雖然在調用時不必傳入相應的參數。 但self的名稱並不是一定的,在python中self不是關鍵詞。在初始化函數中可以把self換成任意名字.

③ python中的self是什麼

class Name():
def __init__(self, name):
self.name = name
def say(self):
print 'Hello, %s' % self.name
如果不用self,那該怎麼實現say(),非常難。

__inti__(self.name)叫做構造函數,凡是Name類的一個對象被創建,先運行構造函數,構造函數需要的參數就是類所需要的參數。 比如 a = Name('Ricky') 其實是 給__init__(self,name)提供參數。而self就說明是類的變數,類里別的函數也可以用的!

這是面向對象編程思路的一個瓶頸,希望你能弄懂。

④ Python中的self有啥用 self.name=name這句話有啥作用

self是對「對象」自身的引用。相當於c++中的this。python中self在類的方法中必須以傳入參數寫在函數的參數列表中。它實際上是指向類的對象的一個類似於C++中指針的私有變數。

python規定:訪問類成員時,需要在前面加上this。這里,this.name = name表示為Person類添加了屬性name。

如果變數前不加this,則視為局部變數。這個變數會在方法運行結束後失效。而屬性在整個類的范圍內都是有效的。

self是只有在類中才會有的。self在定義類的方法時是必須有的,雖然在調用時不必傳入相應的參數。

(4)python中self擴展閱讀:

1、if 語句

1)基本用法:

if 要判斷的條件:條件成立的時候,要做的事情

else:條件不成立的時候,要做的事情

if和else語句以及各自的縮進部分都是一個完整的代碼塊

2、if 邏輯運算

and:

# 條件1 and 條件2

# 兩個條件同時滿足,就返回True

# 兩個條件都不滿足,返回False

⑤ Python類中self的作用

舉例如下:

其中,self是對於對象自身的引用。

在這里,self 改變了變數的作用域。
不加 self 的變數是局部變數,作用域是當前函數;加了 self 的變數是實例變數,作用域是當前實例。

也就是,我們在外部將類 Person 實例化時,可以調用它的 inputname 變數,因為這個變數是實例變數,作用域當前實例,卻調用不了 input1 變數,因為這個變數是局部變數,只能在setName 函數中使用。

我們這里假設 lil = Person(),其中 lil 是 Person 類的一個實例。
當我們調用 lil 的 setName 和 getName 或 greet 方法時,lil 自動將自己作為第一個參數,傳入函數中,因此形象的稱為 self
所以 self 是一個實例,指的實例本身。

通過使用 self,我們可以在其成員方法中訪問他們要對其特性進行操作的對象本身了。

這樣說很拗口,換句話說,我們通過使用 self,將 attribute 的作用域從當前函數 變成 當前實例,這樣這個 attribute 就可以在整個實例中都有效。這樣便於我們在不同的成員方法中對這個 attribute 進行操作。例如上面例子中的 self.name ,因為使用了 self,我們在 getName 和 greet 中均可以使用該實例變數。

而且,對於實例 lil,我們也可以直接調用 name 這個attribute,也就是 lil.name ,是有效的。但是 lil.input1 是無效的,會提示「類裡面沒有這個屬性」。

⑥ python中self是什麼意思

題主可以學習一下面向對象編程的一般知識。
概括的說,主流的支持面向對象編程的語言(Java, python等)關於「類」的定義是很接近的。類要有一個構造函數(python里就是__init__,Java里是與類同名且無返回值的一個方法),在生成對象時會自動調用。然後為了方便在類的方法中引用當前對象,就引入了一些關鍵字(python里是self,Java里是this)。所以self並不是程序員自己定義的,而是語言本身內建支持的。
關於self,由於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

晚上特別針對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能避免非限定調用造成的全局變數。

熱點內容
動態規劃01背包演算法 發布:2024-11-05 22:17:40 瀏覽:849
nasm編譯器如何安裝 發布:2024-11-05 22:01:13 瀏覽:181
登錄密碼在微信的哪裡 發布:2024-11-05 22:00:29 瀏覽:739
c防止反編譯工具 發布:2024-11-05 21:56:14 瀏覽:248
安卓虛擬機怎麼用 發布:2024-11-05 21:52:48 瀏覽:344
php時間搜索 發布:2024-11-05 20:58:36 瀏覽:479
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:528
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:408
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:665
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:392