欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中類和實(shí)例如何綁定屬性與方法示例詳解

 更新時(shí)間:2017年08月18日 10:47:10   作者:/Seirios/  
最近在學(xué)習(xí)python,純粹是自己的興趣愛好,然而并沒有系統(tǒng)地看python編程書籍,覺得上面描述過于繁瑣,在網(wǎng)站找了一些學(xué)習(xí)的網(wǎng)站,下面這篇文章主要給大家介紹了關(guān)于python中類和實(shí)例時(shí)如何綁定屬性與方法的相關(guān)資料,需要的朋友可以參考下。

前言

python類與實(shí)例的方法的調(diào)用中覺得云里霧里,思考之后將自己的想法記錄下,一來加深自己理解,鞏固自己記憶,而來幫助一些想要學(xué)習(xí)python的朋友理解這門抽象的語言,由于Python是動(dòng)態(tài)語言,類以及根據(jù)類創(chuàng)建的實(shí)例可以任意綁定屬性以及方法,下面分別介紹。

1.類綁定屬性

類綁定屬性可以直接在class中定義屬性,這種屬性是類屬。

 class Student(object):
  name = 'Student'

這個(gè)屬性雖然歸類所有,但類的所有實(shí)例都可以訪問到。

class Student(object):
 name = 'Student'
s = Student() # 創(chuàng)建實(shí)例s
print(s.name) # 打印name屬性,因?yàn)閷?shí)例并沒有name屬性,所以會(huì)繼續(xù)查找class的name屬性
print(Student.name) # 打印類的name屬性
Student
Student

此時(shí)如果修改s.name的值,會(huì)有如下結(jié)果:

s.name = 'xiaoming' # 給實(shí)例綁定name屬性
print(s.name) # 由于實(shí)例屬性優(yōu)先級(jí)比類屬性高,因此,它會(huì)屏蔽掉類的name屬性
print(Student.name) # 但是類屬性并未消失,用Student.name仍然可以訪問
xiaoming
Student

接下來刪除s.name屬性:

del s.name # 如果刪除實(shí)例的name屬性
print(s.name) # 再次調(diào)用s.name,由于實(shí)例的name屬性沒有找到,類的name屬性就顯示出來了
Student

由此可見相同名稱的實(shí)例屬性將覆蓋類屬性,刪除實(shí)例屬性后,實(shí)例將向上訪問到類屬性。

2.實(shí)例綁定屬性

實(shí)例綁定屬性的方法有兩種,一是通過類的self變量,二是直接給實(shí)例賦值。

class Student(object):
 def __init__(self, name):
  self.name = name
s = Student('Bob')#方法一 通過類的self變量綁定屬性
s.score = 90#方法二 直接賦值

3.類綁定方法

類綁定方法分兩種,第一種形如類綁定屬性,例程如下:

Class Student(object):
 pass
a=Student()#創(chuàng)建實(shí)例

def set_score(self,score):
 self.score=score

Student.set_score=set_score#類綁定方法
a.set_score(99)#調(diào)用方法
a.score
99#輸出

第二種是使用MethodType給類綁定方法:

Class Student(object):
 pass
a=Student()#創(chuàng)建實(shí)例

def set_score(self,score):
 self.score=score

from types import MethodType
Student.set_score = MethodType(set_score, Student)

a.set_score(99)#調(diào)用方法
a.score
99#輸出

這種方法有一個(gè)需要注意的地方,如果繼續(xù)創(chuàng)建一個(gè)實(shí)例b:

b=Student()
b.set_score(60)
b.score
a.score
60

會(huì)發(fā)現(xiàn)a的屬性score值也變成60。這里個(gè)人的理解是這里的score并不是同上一種方法一樣直接綁定在類,而是類似于像列表一樣的共享引用的關(guān)系,

即實(shí)例a和b都引用這個(gè)score作為自己的屬性,而當(dāng)其被修改時(shí),所有引用它的實(shí)例的對(duì)應(yīng)屬性都將一同發(fā)生變化。

4.實(shí)例綁定方法

第一種通過給類綁定方法,可以使實(shí)例調(diào)用,如上所示。

第二種是使用MethodType給單個(gè)實(shí)例綁定方法。

Class Student(object):
 pass
a=Student()#創(chuàng)建實(shí)例

def set_score(self,score):
 self.score=score

from types import MethodType
a.set_score = MethodType(set_score, a)

a.set_score(99)#調(diào)用方法
a.score
99#輸出

注意這種方式只對(duì)實(shí)例a起作用,如果需要類Studnet的所有實(shí)例均可調(diào)用,那么直接給類Student綁定方法即可。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 詳解Python3中的多重繼承和混入類

    詳解Python3中的多重繼承和混入類

    Python原生支持多重繼承,這使得我們可以從多個(gè)父類中繼承屬性和方法,在本文中,我們將介紹Python中多重繼承的概念,并討論在實(shí)際情況下可能遇到的坑,我們還將討論如何使用混入類來避免這些問題,需要的朋友可以參考下
    2023-05-05
  • 一文帶你探尋Python中的迭代器

    一文帶你探尋Python中的迭代器

    你知道for...in是底層原理是什么樣的么?這篇文章就來和大家詳細(xì)講一講Python中迭代器的的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-04-04
  • Python 創(chuàng)建子進(jìn)程模塊subprocess詳解

    Python 創(chuàng)建子進(jìn)程模塊subprocess詳解

    這篇文章主要介紹了Python 創(chuàng)建子進(jìn)程模塊subprocess詳解,本文詳細(xì)講解了subprocess模塊的方法、參數(shù)、使用實(shí)例等,需要的朋友可以參考下
    2015-04-04
  • pycharm實(shí)現(xiàn)設(shè)置自動(dòng)的參數(shù)注釋標(biāo)識(shí)

    pycharm實(shí)現(xiàn)設(shè)置自動(dòng)的參數(shù)注釋標(biāo)識(shí)

    這篇文章主要介紹了pycharm實(shí)現(xiàn)設(shè)置自動(dòng)的參數(shù)注釋標(biāo)識(shí),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • python-sys.stdout作為默認(rèn)函數(shù)參數(shù)的實(shí)現(xiàn)

    python-sys.stdout作為默認(rèn)函數(shù)參數(shù)的實(shí)現(xiàn)

    今天小編就為大家分享一篇 python-sys.stdout作為默認(rèn)函數(shù)參數(shù)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Visual Studio Code搭建django項(xiàng)目的方法步驟

    Visual Studio Code搭建django項(xiàng)目的方法步驟

    這篇文章主要介紹了Visual Studio Code搭建django項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python根據(jù)用戶需求輸入想爬取的內(nèi)容及頁數(shù)爬取圖片方法詳解

    python根據(jù)用戶需求輸入想爬取的內(nèi)容及頁數(shù)爬取圖片方法詳解

    這篇文章主要介紹了python根據(jù)用戶需求輸入想爬取的內(nèi)容及頁數(shù)爬取圖片方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python正則表達(dá)式匹配ip地址實(shí)例

    Python正則表達(dá)式匹配ip地址實(shí)例

    這篇文章主要介紹了Python正則表達(dá)式匹配ip地址實(shí)例,通過簡單的實(shí)例講述了re模塊的用法,該實(shí)例非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • 構(gòu)建高效的python requests長連接池詳解

    構(gòu)建高效的python requests長連接池詳解

    這篇文章主要介紹了構(gòu)建高效的python requests長連接池詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python列表list保留順序去重的實(shí)例

    python列表list保留順序去重的實(shí)例

    今天小編就為大家分享一篇python列表list保留順序去重的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評(píng)論