同一個類中不同方法之間的變量調用


class Test():

    def fun1(self):
        a = 100
        b = 300
        self.f = 90
        self.e = a + b
        # return e

    def fun2(self):
        self.fun1()
        # tt = self.fun1()
        c = 200
        g = c + self.e + self.f
        # g = c + tt
        print(g)
"""
同一個類中不同方法之間的變量調用;被調用的方法的變量必須是self.變量名的形式,而調用方法在調用另一個方法
的變量時首先要調用另一個方法,然後在才能夠調用其變量;
"""

if __name__ == "__main__":
    c = Test()
    c.fun2()
    1、在類的方法中第一參數永遠是self,表示創建的類實例(對象)本身,而不是類本身。
    2、self代表當前對象的地址。self能避免**非限定調用**造成的全局變量。
    3、如果不加self,表示是類的一個屬性(可以通過"類名.變量名"的方式引用),  加了self表示是類的實例的一個屬性(可以通過"實例名.變量名"的方式引用)。
    4、既然是類的實例,那麼是不是通過這個類的實例(self.xxx)就可以調用類中所有的屬性(方法、參數)然後在類中任何地方(不同的方法之間)都可以使用呢?實際是不行的。在方法中將參數前加self,實際上只是用self佔了一個位,這時這個參數還不是全局變量,當用真正的實例調用時,self會被實例替換然後才變爲全局變量。而不同的方法之間參數調用之所以要先用self.method,就是要把被調用的方法的實例(self)“同化”給調用方法的實例(就是將兩個self變成一個),然後可以調用。
    6、兩種情況除外:1. 對於def  __init__(self):中的屬性(self.xxx = xxx),在其它的方法中可以直接使用self.xxx;2. 在 **unittest.TestCase** 單元測試框架中,在def setUp(self): 方法中命名的變量self.xxx 在其它的方法中也可以直接使用self.xxx;除此之外,對於同一個類中不同方法之間的局部變量的使用必須先用self.fun(),調用一下才可以使用其內部的變量。

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