在__init__和類函式中定義的self變數(成員變數)是一樣的,都可以供給所有類函式呼叫。
類函式中的區域性變數,沒有加self,不能供其他函式直接使用。
class
member()
: num =
0# 類變數,可以直接用類呼叫,或用例項物件呼叫
def__init__
(self, x, y)
: self.x = x # 例項變數(成員變數),需要它是在類的建構函式內以self.開頭來定義的
self.y = y
self.fuc(self.x, self.y)
defadd
(self)
: total =
2# 區域性變數
self.vara =
3# 雖是以self.給出,但並沒有在建構函式中進行初始化
self.varb =
4 fina =
(self.x + self.y)
* total
return self.vara
deffuc(self, a, b)
: self.varc = a # 成員變數,他們在成員函式fuc()中定義,但是在建構函式中呼叫了fuc()函式
self.vard = b #self 成員變數是可以互用的!!!
self.vara =
5return self.vara
在寫leetcode的時候發現,如果用了類變數,如果是字典的形式,那麼會有累積的效應;如果是成員變數則不會出現這個問題。
舉例如下:
class
solution
(object):
def__init__
(self)
: self.a =
defexample
(self, b)
: self.a[b]=5
return self.a
class
solution1
(object):
a =defexample
(self, b)
: self.a[b]=5
self.c =
1return self.a
s = solution(
)h = s.example(8)
print
(h)#
s = solution(
)h = s.example(9)
print
(h)#
s1 = solution1(
)h = s1.example(8)
print
(h)#
s = solution1(
)h = s.example(9)
print
(h)#
python類變數以及例項變數的區別
當前指令碼是為了驗證類變數以及例項變數的區別 class a object name 1 class b a pass class c a pass a.name 2 print a.name,b.name,c.name b.name b print a.name,b.name,c.name a.n...
python 變數命名規範及變數型別總結
一 變數的命名 1 第乙個字元必須是字母表中的字母 大寫或小寫 或者乙個下劃線 2 可以由字母 大寫或小寫 下劃線 或數字 0 9 組成。3 對大小寫敏感的。二 變數的型別 python 不包含像 int 這樣的簡單型別 只有物件型別,如果 python 中需要整數值,將整數賦值給相應變數 如i 1...
Python 獲取類的成員變數及臨時變數
利用python反射機制,從 塊中靜態獲取引數 co argcount 普通引數的總數,不包括引數和 引數。co names 所有的引數名 包括引數和 引數 和區域性變數名的元組。co varnames 所有的區域性變數名的元組。co filename 源 所在的檔名。co flags 這是乙個數值...