1. 程式人生 > >Python中的類與例項屬性

Python中的類與例項屬性

類屬性與例項屬性

在瞭解了類基本的東西之後,下面看一下python中這幾個概念的區別

先來談一下類屬性和例項屬性

在前面的例子中我們接觸到的就是例項屬性(物件屬性),顧名思義,類屬性就是類物件所擁有的屬性,它被所有類物件的例項物件所共有,在記憶體中只存在一個副本,這個和C++,java中類的靜態成員變數有點類似。對於公有的類屬性,在類外可以通過類物件和例項物件訪問。

 

類屬性:所屬類,這個類下所有的物件都可以共享這個類屬性。 相當於java中靜態屬性。

 

比如:

    Class   Person{

            public static  String  name="abc"

    }

1、類屬性

class People(object):

name = 'Tom'#公有的類屬性 

__age = 12#私有的類屬性 

p = People() print(p.name) #正確 

print(People.name) #正確 

print(p.__age) #錯誤,不能在類外通過例項物件訪問私有的類屬性 

print(People.__age) #錯誤,不能在類外通過類物件訪問私有的類屬性

2、例項屬性(物件屬性)

class

People(object):

address = '山東'#類屬性

def__init__(self): 

self.name = 'xiaowang'#例項屬性 

self.age = 20#例項屬性 

p = People()

p.age =12#例項屬性 

print(p.address) #正確 

print(p.name) #正確 

print(p.age) #正確 

print(People.address) #正確 

print(People.name) #錯誤 

print(People.age)

#錯誤

3、通過例項(物件)去修改類屬性

classPeople(object):

country = 'china'#類屬性 

print(People.country)

p = People()

print(p.country)

p.country = 'japan' 

print(p.country) #例項屬性會遮蔽掉同名的類屬性 

print(People.country)

del p.country #刪除例項屬性 

print(p.country)

 

總結

如果需要在類外修改類屬性,必須通過類物件去引用然後進行修改。如果通過例項物件去引用,會產生一個同名的例項屬性,這種方式修改的是例項屬性,不會影響到類屬性,並且之後如果通過例項物件去引用該名稱的屬性,例項屬性會強制遮蔽掉類屬性,即引用的是例項屬性,除非刪除了該例項屬性。

屬性叫法

變數叫法

描述

類屬性(私有和公有)

類變數

所有物件共享同一份類屬性。

例項屬性(私/公)

成員變數

每個不同物件,有不一樣值的例項屬性