同乙個類中不同方法之間的變數呼叫

2021-09-29 09:02:17 字數 1262 閱讀 2262

class

test()

:def

fun1

(self)

: a =

100 b =

300 self.f =

90 self.e = a + b

# return e

deffun2

(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.***)就可以呼叫類中所有的屬性(方法、引數)然後在類中任何地方(不同的方法之間)都可以使用呢?實際是不行的。在方法中將引數前加self,實際上只是用self佔了乙個位,這時這個引數還不是全域性變數,當用真正的例項呼叫時,self會被例項替換然後才變為全域性變數。而不同的方法之間引數呼叫之所以要先用self.method,就是要把被呼叫的方法的例項(self)「同化」給呼叫方法的例項(就是將兩個self變成乙個),然後可以呼叫。

6、兩種情況除外:1. 對於def __init__(self):中的屬性(self.*** = ***),在其它的方法中可以直接使用self.***;2. 在 **unittest.testcase** 單元測試框架中,在def setup(self): 方法中命名的變數self.*** 在其它的方法中也可以直接使用self.***;除此之外,對於同乙個類中不同方法之間的區域性變數的使用必須先用self.fun(),呼叫一下才可以使用其內部的變數。

go 同乙個package下不同方法相互呼叫

乙個包下只能有乙個go檔案有main 方法。在乙個包下會有多個go檔案,需要在乙個go檔案中調另乙個go檔案的方法,示例如下 檔案 path file1.go package main import fmt func test 檔案 path file2.go package main func m...

同乙個程序之間共享變數

編寫程式開啟乙個exe,希望再開啟乙個exe時可以得到上乙個exe共享的資訊 include include data seg 之間的資料必須初始化否則會放在其他段中 pragma data seg shared char sharedwnd 100 sds 共享資料 char sharedwnd2...

spring aop 同乙個bean中方法呼叫方法

component public class testbean transactional public void b a方法中呼叫b方法,b方法的事務是否生效!不生效 原因是spring會為testbean生成乙個 物件 testbeanproxy,只用呼叫testbeanproxy b 切面才會...