標籤:nbsp sel 對象指標 標識 name 對象 self nes 類對象
# 類裡 可以定義兩種屬性 # 靜態屬性 儲存在類的命名空間中 # 只要是這個類就一定有的屬性 # 可以使用類名調用類的靜態屬性 # 可以使用對象調用類的靜態屬性 # 動態屬性# 類和對象的命名空間 # 建立一個類時,會建立一個命名空間在記憶體中 # 建立一個對象時,會建立一個對象的命名空間,這個對象的命名空間中有一個標識,這個標識類對象指標指向了類,所以對象可以找到類,就可以訪問類的靜態屬性 # 對於不可變資料類型,類的靜態屬性最好用類名來操作,不要用對象名來操作。 # 因為對象操作類的靜態屬性時,如果對象中沒有這個屬性,那對象可以訪問類的靜態屬性,但不能修改,一旦進行了修改操作,會在對象的命名空間中 # 建立這個屬性,操作的不是類的靜態屬性 # 當對象中有一個屬性名稱和類的靜態屬性同名時,對象操作的是對象中的那個屬性名稱,操作的是對象自己命名空間中的那個名字 # 對於可變資料類型,對象修改類的靜態屬性值是共用的, 重新複製是獨立的會在對象中建立一個屬性 # 無法直接通過類直接找到具體對象 # 類中不能直接存取全域的變數class Course: # 課程的意思 # 建立了一個類的命名空間在記憶體中 language = ‘Chines‘ # 靜態屬性,授課語言 def __init__(self, teacher, course_name, period, price): self.teacher = teacher self.name = course_name self.period = period self.price = priceCourse.language = ‘English‘ # 通過類名修改類靜態屬性print(Course.language) # Englishpython = Course(‘egon‘, ‘python‘, ‘6 month‘, ‘2W‘) # 建立了一個對象的命名空間,有一個類對象指標指向了類,所以對象可以調用到類的靜態屬性print(Course.language) # English 可以通過python對象查看類的命名空間中的靜態屬性值python.language = ‘Chines‘ # 無法修改類的靜態屬性,而是在python對象中建立了一個language屬性被賦值為Chinesprint(python.language) # Chinesprint(Course.language) # English# 認識Binder 方法 # 當一個對象名調用一個類內方法時,這個方法就和這個對象綁定在一起了class Foo: # 一個沒有init方法的類, def func(self): print(‘func‘)f1 = Foo() # 執行個體化時直接返回了一個沒有屬性值的對象f1.func() # func # 此時f1這個對象綁定了func方法,
類和對象的命名空間