類屬性和例項屬性詳解(python)

2021-08-04 18:51:44 字數 1846 閱讀 4745

首先是什麼是類和例項:

類是對一類具有相同屬性的物件的抽象。

例項是根據類建立出來的乙個個具體的「物件」。乙個類可以例項化出多個例項。

__author__ = "allen liu"

__time__ = "2017/8/2"

'''this is an example ... '''

class dog(object):

leg_num = 4

d1 = dog

d2 = dog

print(d1.leg_num)#輸出4

print(d2.leg_num)#輸出4

上面我們定義了乙個類(dog),d1,d2為這個類的兩個例項。

下面介紹類屬性和例項屬性:

類屬性在類內定義(一般在類的開始),在__init__函式外面。一般是類所共有的屬性定義為類屬性。

在類內部用類名.類屬性名呼叫,外部既可以用類名.類屬性名又可以用例項名.類屬性名來呼叫。

例項屬性一般在類中的函式中定義,例項屬性可能為某個例項獨有。內部呼叫時為self.例項屬性名,外部呼叫時用例項名.例項屬性名。

舉例說明:

__author__ = "allen liu"

__time__ = "2017/8/2"

'''this is an example ... '''

class dog(object):

leg_num = 4 #類屬性

def __init__(self,name,age):

self.name = name #例項屬性

self.age = age #例項屬性

d1 = dog('大黃',1)# 例項化

d2 = dog('小黑',2)

print(d1.leg_num)#輸出4

print(d2.leg_num)#輸出4

print(d1.name,d1.age)#輸出『大黃 1』

print(d2.name,d2.age)#輸出『小黑 2』

修改類屬性的值:類名.類屬性名 = 屬性值。不能通過例項修改類屬性的值。

修改類屬性的值:例項名.例項屬性 = 屬性值。

下面介紹下動態新增例項屬性:

可以通過(例項名.例項屬性名 = 屬性值)的方式新增例項屬性,例如在上面的**下加上下面**:

d1.skin = '黑色'

print(d1.skin)#輸出『黑色』

如果試圖通過例項修改類屬性的值

__author__ = "allen liu"

__time__ = "2017/8/2"

'''this is an example ... '''

class dog(object):

leg_num = 4 #類屬性

def __init__(self,name,age):

self.name = name #例項屬性

self.age = age #例項屬性

d1 = dog('大黃',1)# 例項化

d1.leg_num = 3

print(d1.leg_num,dog.leg_num)#輸出為3,4

這時候發現類屬性的值並沒有改變,但是例項中該屬性的值變了。

首先說下類訪問乙個屬性時的查詢順序:在例項中訪問乙個屬性,會先查詢例項屬性然後才是類屬性。當我試圖用例項去修改乙個在類中不可變的屬性的時候,我實際上並沒有修改,而是在我的例項中建立了這個屬性。而當我再次訪問這個屬性的時候,我例項中有,就不用去類中尋找了。

例項屬性和類屬性

例項屬性和類屬性 由於python是動態語言,根據類建立的例項可以任意繫結屬性。給例項繫結屬性的方法是通過例項變數,或者通過self變數 class student object def init self,name self.name name s student bob s.score 90但是...

類屬性和例項屬性

類屬性就是類物件所擁有的屬性,它被所有類物件的例項物件所共有,在記憶體中只存在乙個副本,這個和c 中類的靜態成員變數有點類似。對於公有的類屬性,在類外可以通過類物件和例項物件訪問 class people object name tom 公有的類屬性 age 12 私有的類屬性 p people p...

類屬性和例項屬性

1.不可修改型別 物件屬性只要賦值,那麼此物件用的屬性就是自己的屬性,不會再用同名的類屬性,類屬性的變化不會再影響到此物件。2.可修改型別 a.修改內部屬性的值,只要修改不是賦值,那麼修改會影響到所有物件以及類屬性。b.如果是重新賦值操作,效果等同於不可修改型別。class a books 三國 西...