python(類和物件之類屬性和類變數)
阿新 • • 發佈:2019-02-16
類屬性 類變數
2.2 getatter()#1.類屬性、類變數、只能由類呼叫的屬性 class People(object): #類變數可以由所有的物件訪問,但是物件只能訪問,不可修改 #用來做資源共享 total = 0 name = 'python8期' #初始化函式,新增物件屬性 def __init__(self,name,age,school): #給物件屬性賦值 self.name =name self.age = age self.school = school #只能使用類修改類變數的值 People.total += 1 # p1和p2是兩個不同的物件,這兩個物件各自的資訊是不可以共享
p1 = People('趙',22,'河南理工大學') print(People.total) p2 = People('霍',22,'河南理工大學') print(People.total) print(p1.name) print(p2.name) #2.類無法訪問物件例項的屬性 # print(People.name) #物件例項可以訪問類屬性/類變數 # print(p1.total) # 物件沒有辦法修改類屬性的值, # 給p1添加了一個total屬性 # p1.total = 100 # print(p1.total) #如果需要修改類變數的值,只能由類呼叫修改 # People.total = 10000 # print(People.total) # #物件訪問到的是修改之後的值 # print(p1.total) p3 = People('張三',23,'智遊') # 獲取物件的屬性值,如果屬性不存在,會丟擲異常 # AttributeError: 'People' object has no attribute 'ssss' #獲取物件的屬性值 # name = p3.ssss # print(name)
#使用getattr(object,name,default)函式,會把獲取到的屬性值返回
#object: 要獲取屬性的物件 name: 要獲取的屬性名 default: 當屬性不存在附一個預設值
#如果屬性不存在,可以給一個預設值,不會讓程式報錯
age =getattr(p3,'sss',30)
print(age)
2.3 hasatter()
#hasattr(object,name)判斷某個物件是否擁有某個屬性 #判斷會返回的結果,如果有這個屬性返回True 沒有返回False s = hasattr(p3,'age') print(s) #先判斷是否擁有這個屬性,在執行獲取屬性值的操作 if hasattr(p3,'ssss'): s = p3.ssss else: print('p3沒有ssss這個屬性')