Python類變量、實例(成員)變量和局部變量

1.類變量

下面介紹類變量的兩種定義方式、兩種讀取方式、在類裏面的調用方式

定義

1.類裏定義的,與構造函數、普通函數是一個級別縮進的。(下面例子裏的num

2.在類外定義的,直接用類名.變量名新增類變量。(下面例子裏的myvar

讀取

1.直接用類名的屬性 獲取:類名.類變量  (下面例子裏的Member.numMember.myvar

2.先實例化類,實例化對象的屬性 獲取 :實例對象.類變量 (下面例子裏的M.numM.myvar

調用

1. 在類裏面調用:類名.類變量,不能直接用類變量,即應爲Member.num而不是num

# -*- coding: utf-8 -*-
class Member():
    num=2 #類變量,可以直接用類調用,或用實例對象調用
    def __init__(self,x,y):
        self.x=x  #實例變量(成員變量),需要它是在類的構造函數內以self.開頭來定義的
        self.y=y


    def add(self):
        total=2  #局部變量
        self.vara=3  # 雖是以self.給出,但並沒有在構造函數中進行初始化
        self.varb=4
        fina=(self.x+self.y)*total
        return fina

    def fuc(self,a,b):
        self.varc=a #成員變量,他們在成員函數fuc()中定義
        self.vard=b
        self.x+=2
        self.y+=2
        self.vara+=3  
        self.varb+=Member.num

Member.myvar = 'huhuh'
print(Member.num,Member.myvar)

M=Member(1,2)
print(M.num,M.myvar)

2.實例(成員)變量

(1)構造函數裏的成員變量:

定義:在__init__(self,成員變量)

讀取:只能實例對象.成員變量,不能類名.成員變量,即只能M.x不能Member.x

調用:構造函數的成員變量,顧名思義:在類實例化的時候,就需要給該變量賦值。類裏的普通函數可直接調用該變量,方式爲:self.成員變量,

作用範圍類裏面的全局變量,其值可以被其他函數修改

(2)普通函數裏的成員變量

定義:在類裏的普通函數def xxx(self,成員變量)

讀取:只能實例對象.成員變量,不能類名.成員變量,即只能M.vara不能Member.vara

調用:方式爲self.成員變量,只有在類實例化後調用該普通函數,此時,該成員變量纔會生,看下面的例子:必須先調用add函數後,fuc函數裏的self.vara和self.varb纔會正常執行,不報錯。

作用範圍類裏面的全局變量,其值可以被其他函數修改

3.局部變量

局部變量相對就簡單很多了,跟不在類裏面的def函數的局部變量是一樣的。

 作用範圍:該函數內部

 

總結:成員函數

1.不同點

(1)構造函數裏的成員變量,在類實例化之後,就可以使用

(2)在類裏普通函數裏的 成員變量,只能先調用該函數,才能使用該成員變量。

2.相同點:

(1)在類裏,都是全局的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章