首先明確的是self只有在類的方法中才會有,獨立的函式或方法是不必帶有self的。self在定義類的方法時是必須有的,雖然在呼叫時不必傳入相應的引數。
classperson:
def_init_(myname,name):
myname.name=name
defsayhello(myname):
'my name is:
',myname.name
p=person('
bill')
print p
self指的是類例項物件本身(注意:不是類本身)。
classperson:
def_init_(self,name):
self.name=name
defsayhello(self):
'my name is:
',self.name
p=person('
bill')
print p
在上述例子中,
self
指向person的例項p。 為什麼不是指向類本身呢,如下例子:
classperson:
def_init_(self,name):
self.name=name
defsayhello(self):
'my name is:
',self.name
p=person('
bill')
p1 = person('')
print p
如果self指向類本身,那麼當有多個例項物件時,self指向哪乙個呢?
理解:為什麼要穿乙個例項物件給自己呢?我理解主要是為了找到自己想呼叫的這個函式在哪,起乙個指向作用,不然那麼多self到底是哪個呢?
self的用法:
classcat:
#屬性#方法
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在物件建立時執行操作。在物件析構時執行操作。注意 ...