Python3 類屬性、類變數
阿新 • • 發佈:2019-01-22
# -*- 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這個屬性')