您現在的位置是:首頁 > 人文
我們既要吃過豬肉,也要見過豬跑。
沒吃過豬肉也見過豬跑吧同義
“沒吃過豬肉,也看過豬跑” 已經成為過去式了,現在的我們要 “即要吃過豬肉,也要見過豬跑”。題目只是逗大家一笑的事兒,本質的意思是想大家在學習的時候要 “
知其然知其所以然
”。
所以今天還是一篇技術文章,既然你點進來了,就看到底嘛,反正也不長。
我們這個星期一直在學 “類” 的相關知識,如果你看過我前面的幾篇文章,你應該知道:將類例項化,透過例項來執行各種方法,應用例項的屬性是做常規操作。但是,你在學習的過程中是否注意過其中的「資料流轉」是什麼樣的?相信大多數人都沒有重視過,或者說沒有這個概念,這個東西其實很重要,今天我們就來說這個「資料流轉」的問題。
首先我們先來看一個例子:
classPerson:
def__init__(self,name):
self。name = name
defget_name(self):
returnself。name
defage(self,n):
self。age = n
defcolor(self,color):
print(‘{0} is {1}’。format(self。name,color))
defhow_old(self):
print(‘{0} age is {1}’。format(self。name,self。age))
boy = Person(‘rocky’)
boy。age(23)
boy。color(‘black’)
boy。how_old()
上面的例子的執行結果是什麼呢?請先思考一下,如果你思考完了,請接著往下看:
rocky is black
rocky age is23
不知道和你的答案是不是一樣呢?建立例項 boy = Person(‘rocky’),將例項物件的引用也傳給了 self,將 self 和 boy 進行比較,簡單點說就是 self 和 boy 都引用了例項物件,但是 self 主要管裡面,boy 主要管外面。
‘rocky’ 呢就是一個具體的資料,透過初始化方法中的 name 引數,傳給 self。name。其實更準確的來說是傳了物件屬性給例項的屬性 name,如果覺得不理解的化,請看一下昨天的文章 —— 連今天是七夕你都不知道?活該你 self!
在類 Person 的其它方法中,都是以 self 作為第一個或者唯一的一個引數,這裡需要主要的是,和其它程式語言不同,在 Python 中這個 self 這個引數是要顯式的寫上,在類的內部是不能省略的。這樣的好處是所有的方法都承接 self 例項物件,它的屬性也自然而然的可以被其它方法所引用。
如果你想把類中的資料從類的裡面傳到外面,可以透過 return 實現,比如我們在例子中的 get_name() 方法。因為引用例項物件的變數是 boy 和 self,所以在類裡面其實是可以用 boy 代替 self,請看下面修改後的例子:
classPerson:
def__init__(self,name):
self。name = name
defget_name(self):
#return self。name
return boy。name
boy = Person(‘rocky’)
name = boy。get_name()
print(name)
執行之後的結果是:
rocky
上面的例子就說明,在例項化以後 boy 和 self 都引用了例項化物件,但是雖然這樣是可以的,在實際的程式設計裡建議你還是不要這麼寫,因為如果你這麼寫的話,會把這個類當成一個專門為了 boy 而私人定製的一個類,從而再無法用這個類生成別的例項。這裡我這麼寫的原因,完全是為了讓你更好的理解。
如果你看到這的話,恭喜你你又賺了。我沒騙人,今天就這一個知識點,學到就是賺到,很容易消化吸收,我一再強調,基礎很重要,往往你忽視的就是你以後要遇到的大坎兒。
七夕也結束了,該努力學習工作啦,要對的起昨天在你身邊陪你的那個人。
The end。
知其然知其所以然
推薦文章
- iPhone15Pro Max雙屏加身,這次不再“擠牙膏”,萬元的定價也值
在iphone14系列上,蘋果首次採取了產品差異化策略,為了拉開標準版和Pro版機型之間的差異,標準版機型的配置幾乎沒有太大的提升...
- 人到中年,可依靠的越來越少,依賴我們的越來越多
《次第花開》人到中年,可依靠的越來越少,依賴我們的越來越多雖說人生實苦,每個階段都不容易,會遇到各種困難,但中年卻是各方面壓力集中爆發的階段...
- 最受歡迎的三大火腿產地,你知道是哪幾個地方麼?
火腿大部分都是採用醃製或者是熏製的烹飪方式,肥瘦相見,吃起來即有口感,又不會讓人覺得膩...