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.f("張三") #設定例項物件屬性
x2.f("李四")
#方式2
x1.name = 11 #設定例項物件屬性
x2.name = 22
#*****=對於上述兩種方式命名空間的分析*****=
'''上述兩種方式從表面看一樣,都是self.xx = "oo"設定例項的屬性,但是不完全一樣
方式1:
在函式內賦值,變數的值均存在於函式區域性命名空間,即例項的屬性存在於該例項的函式屬性的區域性命名空間中
因此直接訪問此類屬性只能在方法內部訪問
方式2:
直接設定例項的屬性,變數的值存在於該例項的區域性命名空間
因此訪問直接訪問此類屬性,通過例項物件直接引用即可訪問
''''''
問題來了...
如果按照上述分析,例項物件豈不是在不同命名空間中有多個同名屬性?
測試如下:
'''
x1.f("王五") #設定例項物件屬性
x2.f("趙六")
x1.f1() #王五
x2.f1() #趙六
x1.name = "王八" #設定例項物件屬性
x2.name = "趙九"
x1.f1() #王八
x2.f1() #趙九
'''
通過上述測試可以發現
1.例項物件和其方法共享同一命名空間
2.例項變數為例項物件特有資料
Python類變數和例項變數
類體中 所有函式之外 此範圍內定義的變數,稱為類屬性或類變數 類屬性的呼叫方式有 2 種,既可以使用類名直接呼叫,也可以使用類的例項化物件呼叫。需要注意的是 因為類變數為所有例項化物件共有,通過類名修改類變數的值,會影響所有的例項化物件 而不能通過類物件修改類屬性。類體中,所有函式內部 以 self...
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程式設計(類變數和例項變數)
關於類變數和例項變數,一直不是很清楚。所以,想做幾個實驗,徹底解決這個問題。為此,我們設計了三個實驗。1 直接引用類變數 import os import sys class a data 10 a a b a print a.data print b.data print a.dict print...