Python3 類屬性、類變數

  • 2020 年 1 月 11 日
  • 筆記

# -*- 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這個屬性')