<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          輕松學(xué)會(huì)python面向?qū)ο蟮?3篇---填坑,關(guān)于屬性和方法(1)

          共 2763字,需瀏覽 6分鐘

           ·

          2021-03-31 09:44

          1. 為何要填坑

          本系列文章遵守一個(gè)簡單的原則---不容易解釋的概念,暫時(shí)不解釋,先從代碼形式入手,等大家熟悉這些概念和名詞后,再回來填坑,以確保做到先易后難,循序漸進(jìn)。

          因此呢,前面的一些概念,講解的并不準(zhǔn)確。只是在那個(gè)時(shí)候,不準(zhǔn)確的概念更有利于你理解,但隨著學(xué)習(xí)的深入,又必須澄清這些概念,否則,就走錯(cuò)了路。

          從這一篇開始,我后續(xù)會(huì)逐步將前面挖的坑填上。

          2. 屬性和方法的坑

          本系列的第2篇文章,主題便是屬性和方法,文章里對于屬性和方法的介紹非常的粗糙,甚至是不準(zhǔn)確的。

          對于屬性,有類屬性實(shí)例屬性之分。

          對于方法,有類方法,實(shí)例方法靜態(tài)方法之分

          本篇重點(diǎn)講解類屬性和實(shí)例屬性

          3. 類屬性和實(shí)例屬性

          3.1 實(shí)例屬性

          class Book():
          def __init__(self, _name, _author, _price):
          self.name = _name # 書名
          self.author = _author # 作者
          self.price = _price # 價(jià)格

          name,author, price 都是實(shí)例屬性,在本系列第10篇文章里已經(jīng)闡明,屬性屬于對象,對象和實(shí)例在本系列文章中表示同一個(gè)事物。實(shí)例屬性,在對象,實(shí)例被創(chuàng)建出來以后才存在的。上面的代碼,只是定義了一個(gè)類,沒有創(chuàng)建任何實(shí)例對象,這些屬性壓根就不存在,實(shí)例屬性,依附于實(shí)例而存在。

          3.2 類屬性

          類屬性又是什么東西呢?我定義一個(gè)新的類

          class NovelBook():
          book_type = "小說"

          def __init__(self, _name, _author, _price):
          self.name = _name # 書名
          self.author = _author # 作者
          self.price = _price # 價(jià)格

          book_type就是類屬性,它是NovelBook的類屬性,你可以這樣來使用它

          print(NovelBook.book_type)      # "小說

          novel = NovelBook("西游記", '吳承恩', '100')
          print(novel.book_type) # 小說

          novel.book_type = '言情小說'
          print(novel.book_type) # 言情小說

          print(NovelBook.book_type) # 小說
          NovelBook.book_type = "魔幻小說"
          print(NovelBook.book_type) # 魔幻小說

          你可以通過類直接訪問類的屬性,也可以通過對象實(shí)例訪問類的屬性,但是你不能通過對象實(shí)例修改類的屬性,因?yàn)轭惖膶傩允菍儆陬惖?,這一點(diǎn)從名稱上就可以看得出來,也因?yàn)槿绱?,你可以通過類來修改類屬性。至于為什么不能通過實(shí)例對象修改類屬性,我后面來填這個(gè)坑。

          3.3 實(shí)例屬性只能在類里定義么?

          3.1 小節(jié)中的內(nèi)容,可能會(huì)讓你產(chǎn)生一個(gè)誤解,以為只有定義在__init__方法里的self.XXX才是實(shí)例屬性,實(shí)際情況不是這樣,我下面舉兩個(gè)例子

          class NovelBook():
          book_type = "小說"

          def __init__(self, _name, _author, _price):
          self.name = _name # 書名
          self.author = _author # 作者
          self.price = _price # 價(jià)格

          def set_page_count(self, count):
          self.page_count = count # page_count也是實(shí)例屬性

          novel = NovelBook("西游記", '吳承恩', '100')
          novel.set_page_count(290)
          print(novel.page_count) # 290

          setattr(novel, 'score', 100)
          print(novel.score) # 100

          page_count不是在__init__方法里定義的,但也是實(shí)例屬性,區(qū)別在于,實(shí)例對象被創(chuàng)建好了以后,就會(huì)自動(dòng)調(diào)用__init__方法進(jìn)行初始化,你可以理解為實(shí)例被創(chuàng)建出來以后,name, author, price就已經(jīng)存在了,而此時(shí)page_count 還不存在,要等到novel對象調(diào)用set_page_count方法時(shí),page_count才會(huì)被創(chuàng)建。

          我用setattr函數(shù),強(qiáng)行為示例對象novel增加了一個(gè)socre屬性,所有才能夠用novel.score這種寫法獲取到score屬性。

          實(shí)例屬性有這樣的表現(xiàn),你應(yīng)當(dāng)已經(jīng)猜到,類屬性也可以這樣來操作。

          3.4 類屬性有什么作用呢?

          實(shí)例屬性的作用比較容易理解,類屬性則困難一些,你有這樣的疑惑倒也正常。這里又要給你挖一個(gè)坑,python語言里,一切皆對象,你用class 定義出來的類,比如NovelBook,其實(shí),也是一個(gè)對象,它是type這個(gè)類創(chuàng)建出來的對象,NovelBook也有一些需要被描述的屬性,比如book_type,描述書的類型。

          關(guān)于類屬性,對它的思考,不必過于執(zhí)著,暫且從概念上理解到這里。它存在的合理性和必要性,要等到你對編程有更深入的理解和實(shí)踐之后才能夠有所體會(huì),眼下,還是從形式上記住它。

          如果你總是嘗試用理解代替記憶,那么你就會(huì)執(zhí)著于尋找具體的應(yīng)用實(shí)例來解答心中的疑惑,通過具體應(yīng)用場景來理解它??墒抢斫饩唧w應(yīng)用實(shí)例需要你自身有堅(jiān)實(shí)的基礎(chǔ)和豐富的知識(shí),這本身又是你目前所欠缺的,這很矛盾。

          越是學(xué)習(xí)高階的編程知識(shí),越是無法從現(xiàn)實(shí)生活中尋找到可以類比的事物和概念,即便勉強(qiáng)找到了,也是詞不達(dá)意。進(jìn)入到高階知識(shí)學(xué)習(xí)階段,你必須融入到編程的世界里來,用計(jì)算機(jī)的語言來描述你的問題,用編程語言的語法和概念,逐步的構(gòu)建出一個(gè)虛擬的世界。

          這個(gè)世界里,天馬行空,一切超乎尋常的想象,只要符合邏輯,都可以合理的存在。


          瀏覽 42
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲无码精品在线观看 | 粉嫩小泬BBBBBB免费 | caopeng97人人 | 日本黄色小视频 | 欧美蜜桃亚洲 |