類變數是在類下面直接定義的變數,類變數被類和例項訪問。所有例項在對類變數賦值之前一直共享記憶體,賦值後就各自儲存各自的類變數。
成員變數在__init__函式中定義的以self.開頭,可以被例項訪問。
區域性變數是在別的函式下定義的可以self.開頭也可以不以此開頭。不能被訪問
普通函式,不能訪問類中的任何變數。
例項方法:第乙個引數是self。可以通過self.訪問任何類引數。
靜態方法: @staticmethod,不能訪問類中的變數。
類方法和靜態方法可以被類直接使用。
class class_name(object):
class_var = 'i am a class variable' #(1):類變數
def __init__(self):
self.instance_var = 'i am a instance varibale' #(2):成員變數(例項變數)
def instance_method(self, formal_parameter):#<2>:例項方法,可以訪問類變數和成員變數
local_var_in_function = self.class_var #(3):例項方法區域性變數
self.local_var_also_in_function = self.instance_var #(3)例項方法區域性變數
def ordinary_function(formal_parameter):#<1>普通函式
print ("i am an ordinary function, i can't vist class var and intance var")
print (self.instance_var) #報錯,因此普通函式無法訪問成員函式
print (clacc_var)#報錯,因此普通函式無法訪問類變數
@classmethod
def class_method(tls, formal_parameter): #<3>:類方法,第乙個引數時傳入類,可訪問和修改類變數和成員變數,類變數以cls.開頭
print ('i am class method, i can visit and modifying class var and instance var')
tls.instance_var = formal_parameter
print ('instance_var changed',tls.instance_var)
class_var = formal_parameter
print ('class_var changed',class_var)
@staticmethod#<4>:靜態方法,不能訪問成員變數和類變數
def static_method(formal_parameter):
print(formal_parameter)
print ('i am static method, i am the adopted son(乾兒子) for this class!!')
print ("i can't visit and modify anything in the class ")
#print class_var
#print self.instance_var
class_instance = class_name()#類的乙個例項 #i am a class variable
print(class_name.class_var)#類訪問類變數
class_name.class_var='changed by class'#通過類改變類變數
print(class_instance.class_var)#changed by class
class_name.class_var='changed by class secondly'#通過類第二次改變類變數
print(class_instance.class_var)#changed by class secondly
class_instance.class_var='changed by class instance'#通過例項類變數,分配記憶體給例項的類邊,從此分開處理
class_name.class_var='changed by class thirdly'#通過類第三次改變類變數
print(class_instance.class_var)#changed by class instance
#print(class_name.instance_var)報錯
print(class_instance.instance_var)#i am a instance varibale
#print(class_instance.local_var_in_function)報錯
class_name.class_method('class visit class method')
class_name.static_method('class visit static_method')
print ('end!!')
python中的類,類變數,例項變數
這幾天寫 的時候碰到乙個python中的小問題,找了好半天才解決,所以記錄下來。classa object def init self self.x y def call self for i in range 5 print x self.x print y y 輸出的結果是 x 5,5,5,5,...
python中類變數和例項變數 之例項變數
class test def f self,name self.name name def f1 self print self.name 例項變數為例項物件特有資料 x1 test 例項化test類,建立例項物件x1 x2 test 例項化test類,建立例項物件x2 設定例項屬性 方式1 x1....
python的類變數和成員變數
先看看下面 python view plain copy class testclass object val1 100 def init self self val2 200def fcn self val 400 val3 300 self val4 val self val5 500if na...