深入理解python之self

2022-02-08 12:56:01 字數 1940 閱讀 3287

首先明確的是self只有在類的方法中才會有,獨立的函式或方法是不必帶有self的。self在定義類的方法時是必須有的,雖然在呼叫時不必傳入相應的引數。

class

person:

def_init_(myname,name):

myname.name=name

defsayhello(myname):

print

'my name is:

',myname.name

p=person('

bill')

print p

self指的是類例項物件本身(注意:不是類本身)。

class

person:

def_init_(self,name):

self.name=name

defsayhello(self):

print

'my name is:

',self.name

p=person('

bill')

print p

在上述例子中,self指向person的例項p。 為什麼不是指向類本身呢,如下例子:

class

person:

def_init_(self,name):

self.name=name

defsayhello(self):

print

'my name is:

',self.name

p=person('

bill')

p1 = person('')

print p

如果self指向類本身,那麼當有多個例項物件時,self指向哪乙個呢?

理解:為什麼要穿乙個例項物件給自己呢?我理解主要是為了找到自己想呼叫的這個函式在哪,起乙個指向作用,不然那麼多self到底是哪個呢?

self的用法:

class

cat:

#屬性#方法

defeat(self):

print("

貓在吃魚....")

defdrink(self):

print("

貓正在喝kele.....")

defintroduce(self):

#print("%s的年齡是:%d"%(tom.name, tom.age))

print("

%s的年齡是:%d

"%(self.name, self.age))

#建立乙個物件

tom =cat()

#呼叫tom指向的物件中的 方法

tom.eat()

tom.drink()

#給tom指向的物件新增2個屬性

tom.name = "湯姆"

tom.age = 40

#獲取屬性的第1種方式

#print("%s的年齡是:%d"%(tom.name, tom.age))

tom.introduce()

#相當於 tom.introduce(tom)

lanmao =cat()

lanmao.name = "

藍貓"# 相當於給類裡面新增了name的類屬性

lanmao.age = 10 # 新增了age的類屬性lanmao.introduce()

結果:

d:\python3\python3.exe "

e:/baidunetdiskdownload/python01/python-01/01 基礎/第2節 python語法基礎/07.面對物件-1/原始碼/07-self.py

"貓在吃魚....

貓正在喝kele.....

湯姆的年齡是:40藍貓的年齡是:10

python模組之psutil深入理解

做監控的時候,可能會用到psutil這個python包來獲取機器的cpu memory disk net os和一些其他的資訊,今天對psutil這個包做了進一步的分析。各項引數的獲取大同小異,此處以memory為例。獲取psutil python包,github psutil init.py if...

python深入 Python的深入理解

處理檔案和目錄 python 3 帶有乙個模組叫做 os,代表 作業系統 operating system os 模組 包含非常多的函式用於獲取 和修改 本地目錄 檔案程序 環境變數等的資訊。python 盡最大的努力在所有支援的作業系統上提供乙個統一的api,這樣你就可以在保證程式能夠在任何的計算...

深入理解Python類

c 中,類有兩個關鍵的內建函式,建構函式和析構函式。在python中,其實也有類似的函式,他們就是 def init self pass def del self pass def enter self pass def exit self pass在物件建立時執行操作。在物件析構時執行操作。注意 ...