1. 程式人生 > >python(類和物件之類屬性和類變數)

python(類和物件之類屬性和類變數)

 類屬性 類變數
#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)
2.2 getatter()
#使用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這個屬性')