給物件增加屬性
先來看個例子:
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 ...