Python中關於 self 的種種用法筆記

2022-07-29 18:54:14 字數 1229 閱讀 1313

給物件增加屬性

先來看個例子:

class cat:

def eat(self):

print("%s 愛吃魚" % self.name)

在 python 中,要 給物件設定屬性,非常的容易,但是不推薦使用

tom.name = "tom"

lazy_cat.name = "大懶貓"

使用self在方法內部輸出每乙隻貓的名字 由 哪乙個物件 呼叫的方法,方法內的self就是 哪乙個物件的引用 在類封裝的方法內部,self就表示 當前呼叫方法的物件自己 呼叫方法時,程式設計師不需要傳遞self引數 在方法內部 可以通過self.訪問物件的屬性 也可以通過self.呼叫其他的物件方法

改造**如下:

class cat:

def eat(self):

print("%s 愛吃魚" % self.name)

tom = cat()

# tom.eat()

# 給物件臨時增加屬性

tom.name = "tom"

# 現在呼叫就沒問題

tom.eat()

lazy_cat = cat()

lazy_cat.name = "大懶貓"

lazy_cat.eat()

執行結果如下:

「」"tom 愛吃魚

大懶貓 愛吃魚

「」"在 類的外部,通過 變數名. 訪問物件的 屬性和方法

在 類封裝的方法中,通過self.訪問物件的 屬性和方法

在類的外部給物件增加屬性

將案例**進行調整,先呼叫方法 再設定屬性,觀察一下執行效果

python tom = cat()

tom.drink()

tom.eat()

tom.name = "tom"

print(tom)

# 程式執行報錯如下:

# attributeerror: 'cat' object has no attribute 'name' 屬性錯誤:'cat' 物件沒有 'name' 屬性

提示

未完待續

關於python中self的理解

self可以這麼理解 class就是表示 汽車 然後 init 是一些汽車的基本定義,比如要有發動機,要有方向盤 在這個定義的過程中,可能需要一種引用,比如現在北京要求汽車都要裝自檢測系統,監測系統統計資料必定是某一輛車它自身的,是乙個 例項 邦定的行為,你的檢測功能不會也不允許去收集其他汽車的資料...

python中self的用法

self相當於是類對外提供的乙個呼叫屬性和動態方法的介面,在類的方法中加上self,則可以通過例項化後的物件呼叫,沒有的話就只能通過類本身呼叫 類名.函式名 分為兩種情況 class test01 def init self,t self.t t def testfun01 self print 這...

python中的 self 應用

x 6 class a def sing self self.x 10 def mutl self y 10 x print y a a a.mutl 結果是 60 先弄清 mutl 中的 x 到底是哪乙個?為什麼不呼叫類內部的 x 引數而跑去呼叫類外的 x 呢?self 到底指代的是誰,self ...