Python3 類屬性、類變數
# -*- coding:utf-8 -*- # 類屬性、類變數:只能由類調用的屬性 class People(object): # 類變數可以由所有的對象訪問,但是對象只能訪問,不可修改 # 用來做資源共享 total = 0 # 初始化函數,添加對象屬性 def __init__(self,name,age,school): # 給對象屬性賦值 self.name = name self.age = age self.school = school # 只能使用類修改類變數的值 People.total += 1 # p1和p2是兩個不同的對象,這兩個對象各自的資訊不共享 p1 = People('雷軍',21,'小米大學') print (People.total) p1 = People('馬化騰',22,'騰訊大學') print (People.total) ''' # 類無法訪問對象實例的屬性 # print (People.name) # 對象實例可以訪問類屬性/類變數 print (p1.total) # 對象沒有辦法修改類變數的值 # 給對象p1添加了一個total屬性 # p1.total = 100 # print (p1.total) # 如果需要修改類變數的值,只能由類調用修改 People.total = 1000 print (People.total) # 對象訪問到的是修改之後的值 print (p1.total) ''' p3 = People('張三',23,'清華') # 獲取對象的屬性值,如果屬性不存在,會出現異常 # AttributeError: 'People' object has no attribute 'ssss' # name = p3.ssss # print (name) # 使用getattar(object,name,default)函數,會把獲取到的屬性值返回 # object 要獲取屬性的對象 name 要獲取的屬性名 default 當屬性不存在,賦一個默認值 # 如果屬性不存在,可以給一個默認值,不會讓程式出現異常 age = getattr(p3,'age',30) print (age) # hasattr(object,name) 判斷某個對象是否擁有某個屬性 # 判斷會返回結果,如果有這個屬性返回Ture,沒有返回False s = hasattr(p3,'age') print (s) # 先判斷是否有這個屬性,在執行獲取屬性值得操作 if hasattr(p3,'ssss'): s = p3.ssss else: print ('p3沒有ssss這個屬性')