国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python類(class)的定義、使用、繼承、應(yīng)用的通俗易懂理解

這篇具有很好參考價值的文章主要介紹了python類(class)的定義、使用、繼承、應(yīng)用的通俗易懂理解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.為什么使用類

????????一個類(class)可以包囊眾多函數(shù),所以一般使用類的情況下,都需要用到眾多有共性的函數(shù),把這些可能會一起調(diào)用的函數(shù)或者需要接連調(diào)用的函數(shù)歸為一個類,這樣需要使用的時候可以輕易的找到。

????????在處理不同細節(jié)時使用的類區(qū)別開來會使得代碼更加的清晰。特別是像交互彈窗這樣的程序,如果需要做多頁跳轉(zhuǎn),每一頁的布局十分復雜時,使用類會讓寫代碼時的頭腦更加清晰。

2.基本的使用方式舉例

class ha:

    def __init__(self,a):
        self.hh=a

    def qw(self):
        print(self.hh**2)

    def mm(self):
        if self.hh==9:
            return 0


ha.qw(ha(3))

?結(jié)果:

9

進程已結(jié)束,退出代碼為 0

????????首先定義一個類,名為ha,然后用init定義所有函數(shù)的共同參數(shù),因為init構(gòu)造函數(shù)是會在調(diào)用整個類時自動運行的,所以不需要主動調(diào)用。如圖,即使沒有主動調(diào)用init函數(shù),也可以將init中的參數(shù)用于qw函數(shù),而mm函數(shù)不會自動調(diào)用

---------------------------------------------------------------------------------------------

3.類的特點,結(jié)構(gòu)

? ? ? ? 1.類中的每個函數(shù)的第一個形參必須一致,通常命名為self,你也可以選擇自己命名更簡單的寫法(但是不規(guī)范)。

? ? ? ? 2.類的第一個函數(shù)通常為init函數(shù),這個函數(shù)為構(gòu)造函數(shù),也是整個類中最特殊的函數(shù),它的主要目的是傳遞其他函數(shù)需要的參數(shù),或者調(diào)用其他函數(shù)也讓他們自動運行。

? ? ? ? 3.構(gòu)造函數(shù)沒有返回值,但是其他函數(shù)可以返回一個值。

? ? ? ? 4.不主動調(diào)用類中的某個非構(gòu)造函數(shù)的函數(shù),則該函數(shù)不會被運行。

? ? ? ? 5.構(gòu)造函數(shù)不是直接將形參傳遞給其他函數(shù),而是定義一個新的,有特定形式的變量來儲存這個形式參數(shù)(如上例self.hh=a,其中self.hh為定義的變量,a為調(diào)用這個類時需要傳入的形參,賦值給self.hh,self.hh可以被直接使用,而a只能在構(gòu)造函數(shù)中使用。? 原因是self是所有函數(shù)的共同屬性,而a只是構(gòu)造函數(shù)中的一個參數(shù)),這個變量可以在其他函數(shù)中直接使用,與global全局變量的方式一致。

? ? ? ?6.定義類時,一般不含有括號(如上例class ha:),也可以使用括號,代表著這個類需要與另一個類共享屬性和參數(shù),即,你可以在這個類中調(diào)用另一個類的函數(shù)。另外,如果使用的是python庫中的類的函數(shù),則可以不需要寫入括號也能調(diào)用。

**********************************************************

類繼承的調(diào)用示例:

class ha:

    def __init__(self,a):
        self.hh=a

    def qw(self,c):
        print(self.hh**2)
        print(c)

    def mm(self):
        if self.hh==9:
            return 0


class haha(ha):
    def __init__(self,a):
        self.hh = 15
        # super().__init__(a)
        print(self.hh)

    def aw(self):
        self.hh=10
        print(self.hh)


haha(a=3).qw(c=2)

先注釋掉super。

在上例的基礎(chǔ)上,增加了haha類,haha類為子類,繼承父類(ha)的屬性和參數(shù)。

也就是說我們可以在haha中調(diào)用ha中除了構(gòu)造函數(shù)的其他的函數(shù)。

?

結(jié)果:

15
225
2

????????我們在haha中調(diào)用qw函數(shù)則需要在haha中傳入a參數(shù),這里a=3,然后向qw傳入c=2。我們先是調(diào)用的haha類,再只調(diào)用ha類中的qw函數(shù),因此先自動執(zhí)行了haha類的構(gòu)造函數(shù),打印了15。再進入qw函數(shù)分別打印15的平方和c(也就是2)。

? ?**********************************************************************************************? ? ?

當我們使用super時,則可以調(diào)用父類的構(gòu)造函數(shù):

class ha:

    def __init__(self,a):
        self.hh=a

    def qw(self,c):
        print(self.hh**2)
        print(c)

    def mm(self):
        if self.hh==9:
            return 0


class haha(ha):
    def __init__(self,a):
        self.hh = 15
        super().__init__(a)
        print(self.hh)

    def aw(self):
        self.hh=10
        print(self.hh)


haha(a=3).qw(c=2)

取消掉注釋,得到結(jié)果:

3
9
2

這里先得到self.hh=15,但是由于調(diào)用了父類的構(gòu)造函數(shù),將15覆蓋為a,a=3,下如上同理。

*******************************************************************************************

為了更方便理解,我們改寫一個變量名:

class ha:

    def __init__(self,a):
        self.hh=a

    def qw(self,c):
        print(self.hh**2)
        print(c)

    def mm(self):
        if self.hh==9:
            return 0


class haha(ha):
    def __init__(self,b):
        self.hh = 15
        super().__init__(b)
        print(self.hh)

    def aw(self):
        self.hh=10
        print(self.hh)


haha(b=3).qw(c=2)

結(jié)果與上一致。因此我們得出結(jié)論:super().__init__(b)是將子類構(gòu)造函的形參b傳遞給父類構(gòu)造函數(shù)的形參a,他們之間是一一對應(yīng)的,所以也要求兩類的形參數(shù)量一致,否則會報錯。

******************************************************************************************?

多個變量傳遞的例子:

class ha:

    def __init__(self,a,d):
        self.hh=a
        print(d)

    def qw(self,c):
        print(self.hh**2)
        print(c)

    def mm(self):
        if self.hh==9:
            return 0


class haha(ha):
    def __init__(self,b,e):
        self.hh = 15
        super().__init__(b,e)
        print(self.hh)

    def aw(self):
        self.hh=10
        print(self.hh)


haha(b=3,e=10).qw(c=2)
10
3
9
2

我們再反轉(zhuǎn)e,b的傳入順序:

class ha:

    def __init__(self,a,d):
        self.hh=a
        print(d)

    def qw(self,c):
        print(self.hh**2)
        print(c)

    def mm(self):
        if self.hh==9:
            return 0


class haha(ha):
    def __init__(self,b,e):
        self.hh = 15
        super().__init__(e,b)
        print(self.hh)

    def aw(self):
        self.hh=10
        print(self.hh)


haha(b=3,e=10).qw(c=2)

得到:

3
10
100
2

因此上結(jié)論得證(他們之間是一一對應(yīng)的,所以也要求兩類的形參數(shù)量一致,否則會報錯。)。

********************************************************************

4.應(yīng)用到tkinter庫交互彈窗

? ? ? ? 我們假如需要利用到用戶點擊一個按鈕的次數(shù)作為條件,例如點擊3次,或者6次等等,出現(xiàn)一個彈窗那么寫一個類更加方便,因為這個循環(huán)次數(shù)可以被拿出來寫在構(gòu)造函數(shù)中做一個統(tǒng)一歸類。因為個人還沒能力寫比較復雜的交互彈窗,因此這里只淺淺感受一下:

? ? ? ? 部分代碼為:

class qmqm:
    def __init__(self):
        self.i = 0
        self.zujian()

    def zujian(self):
        global b

        def dw():
            if self.i<=2:
                self.i+=1
                messagebox.showinfo(title='中計了吧',message="送你一朵花,欠款*%d" %self.i)
            else:
                messagebox.showinfo(title='夠了',message='你已經(jīng)還不起了,別在點了')

? ? ? ? 我們將循環(huán)次數(shù)i放進構(gòu)造函數(shù)中,如果未來需要調(diào)用,則可以在其他類中用super類調(diào)用父類構(gòu)造函數(shù)取得i的值。達成彈窗:

2月7日文章來源地址http://www.zghlxwxcb.cn/news/detail-834807.html

到了這里,關(guān)于python類(class)的定義、使用、繼承、應(yīng)用的通俗易懂理解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 理解C#委托(Delegate)通俗易懂,深入淺出

    理解C#委托(Delegate)通俗易懂,深入淺出

    委托首先是一個數(shù)據(jù)類型,我們可以像定義結(jié)構(gòu)體一樣定義一個委托類型,委托(Delegate) 是存有對某個方法的引用的一種引用類型變量。引用可在運行時被改變 委托的定義 例如: 在定義委托類型時要指定函數(shù)的參數(shù)類型和返回值,一旦聲明了委托類型,委托對象必須使用

    2024年02月02日
    瀏覽(28)
  • 通俗易懂,Spring Bean生命周期管理的理解

    目錄 1、實例化階段 2、初始化階段 3、銷毀階段 總結(jié) 在Spring框架中, Bean是最基本的組件,它是Spring框架中的一個Java對象 。 下面通過@Bean來理解bean的生命周期: 在Spring框架中,@Bean注解用于告訴Spring框架一個方法將會返回一個對象,這個對象要注冊為Spring應(yīng)用上下文中的

    2024年02月21日
    瀏覽(31)
  • 通俗易懂 快速理解 JDK動態(tài)代理 和 cglib動態(tài)代理

    通俗易懂 快速理解 JDK動態(tài)代理 和 cglib動態(tài)代理

    動態(tài)代理的實現(xiàn)方案有兩種, JDK動態(tài)代理 和 CGLIB動態(tài)代理 ,區(qū)別在于JDK自帶的動態(tài)代理,必須要有接口,而CGLIB動態(tài)代理有沒有接口都可以。 JDK動態(tài)代理 :JDK原生的實現(xiàn)方式,需要被代理的目標類必須實現(xiàn)接口。因為這個技術(shù)要求 代理對象和目標對象實現(xiàn)同樣的接口 (兄

    2024年02月08日
    瀏覽(23)
  • 通俗易懂理解幾何光學(四)光學系統(tǒng)中的光闌與光束限制

    通俗易懂理解幾何光學(四)光學系統(tǒng)中的光闌與光束限制

    在理想光學系統(tǒng)中,任意大小的物體能以任意寬的光束成一定倍率的像。當共軛距一定時,像的大小與物的大小成比例。 在實際光學系統(tǒng)中,成像光束將會受到限制: 成像系統(tǒng)中各個元件的大小有限,從而限制了物面上每一點發(fā)出并進入系統(tǒng)參與成像的光束的寬度; 像面的

    2024年02月05日
    瀏覽(24)
  • 【TypeScript】中定義與使用 Class 類的解讀理解

    【TypeScript】中定義與使用 Class 類的解讀理解

    類是用于創(chuàng)建對象的模板。他們用代碼封裝數(shù)據(jù)以處理該數(shù)據(jù)。JavaScript 中的類建立在原型上,但也具有某些語法和語義未與 ES5 類相似語義共享。 TypeScript 除了實現(xiàn)了所有 ES6 中的類的功能以外,還添加了一些新的用法。 關(guān)于 ES6的 Class 類語法概念 ,在本章節(jié)不做過多闡述,

    2024年02月14日
    瀏覽(18)
  • uni小程序 自定義tabbars切換 閃動問題解決(通俗易懂)

    uni小程序 自定義tabbars切換 閃動問題解決(通俗易懂)

    在小程序開發(fā)中,默認tabbar基本上是不能夠滿足我們的需求的,多數(shù)情況下都需要引入自定義的tabba, 但是在使用自定義tabbar的過程中就會遇到一些問題,例如切換閃動(由于tabbar頁面跳轉(zhuǎn),組件重新創(chuàng)建導致)... 下面就看看怎么樣去解決這個問題 其實很簡單, 就是以組件

    2024年02月09日
    瀏覽(27)
  • 建造者模式深入理解:演示建造單個和多個產(chǎn)品的實踐,結(jié)合模板模式,通俗易懂

    建造者模式深入理解:演示建造單個和多個產(chǎn)品的實踐,結(jié)合模板模式,通俗易懂

    首先呢看下建造者的定義是什么樣的,先讀一遍 建造者模式 (Builder Pattern)是一種創(chuàng)建型設(shè)計模式,它主要用于將一個復雜對象的構(gòu)建過程與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表現(xiàn)形式。這種模式通過一系列可重用的獨立的類(稱為建造者或構(gòu)建器)來一

    2024年01月22日
    瀏覽(28)
  • useVModel()的使用------通俗易懂

    用于父子組件共享數(shù)據(jù), 1、父組件有個flag(Boolean)屬性 2、將flag屬性傳遞給子組件,要實現(xiàn)雙向數(shù)據(jù)綁定 3、flag屬性在子組件發(fā)生變化,父組件的flag屬性一起改變 父組件app.vue 1、父組件有flag屬性,使得flag和子組件uniInput雙向綁定 2、使用v-model:flag進行雙向綁定,v-model的默

    2024年01月15日
    瀏覽(25)
  • 通俗易懂讀寫鎖ReentrantReadWriteLock的使用

    通俗易懂讀寫鎖ReentrantReadWriteLock的使用

    ReentrantReadWriteLock不知道大家熟悉嗎?其實在實際的項目中用的比較少,反正我所在的項目沒有用到過。 ReentrantReadWriteLock稱為讀寫鎖,它提供一個讀鎖,支持多個線程共享同一把鎖。它也提供了一把寫鎖,是獨占鎖,和其他讀鎖或者寫鎖互斥,表明只有一個線程能持有鎖資源

    2024年02月06日
    瀏覽(23)
  • SVM(支持向量機)進行分類的原理和python代碼----通俗易懂

    SVM(支持向量機)進行分類的原理和python代碼----通俗易懂

    SVM(支持向量機,Support Vector Machine)是一種非常流行的機器學習算法,可用于二分類和多分類問題。其基本思想是通過在不同類別的樣本之間構(gòu)建最大化分類間隔的線性或非線性超平面來實現(xiàn)分類。 SVM分類的基本步驟如下: 根據(jù)訓練集數(shù)據(jù),選取最優(yōu)的超平面(通常為線性

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包