1. 程式人生 > 實用技巧 >面向物件(三)-例項屬性與類屬性

面向物件(三)-例項屬性與類屬性

例項屬性和類屬性

1 概念

  • 例項屬性:每個物件具有的屬性,且每個屬性的值一般不同,比如每個人的姓名
  • 類屬性:每個物件具有的屬性,但是每個屬性的值相同,比如人類的最大壽命,班級內學生的性別

2 區別
(1)概念上

  • 例項屬性值是每個物件各自獨立的,在記憶體中也會出現多份
  • 類屬性一般所有物件都共有的,在記憶體中只保留一份

(2)宣告位置

  • 例項屬性:在__init__()方法中
  • 類屬性:直接在類中定義

(3)訪問方式

  • 例項屬性:只有例項物件能夠訪問
  • 類屬性:例項物件和類物件都可以訪問

(4)修改形式

  • 例項屬性:例項物件.例項屬性 = 值
  • 類屬性:類物件.類屬性 = 值,例項物件不能修改類屬性

    注意:如果例項物件具有和類物件同名的例項屬性,優先使用例項屬性。
# 定義學生類,屬性:name,age,gender 
class Student: 
      gender = "男" 
      # 類屬性:公共資源 
      def __init__(self, name, age): 
            self.name = name self.age = age 

# self.gender = gender # zs,ls是否為同一個地址?不同
zs = Student('zs', 20) 
ls = Student('ls', 20) 


print(Student.gender) # 類物件可以訪問類屬性 
print(Student.name) # 類物件可以訪問例項屬性?不能 


# 修改屬性 
zs.gender = "女" # 增加一個gender例項屬性 
Student.gender = "女" # 修改類屬性