首先是什麼是類和例項:
類是對一類具有相同屬性的物件的抽象。
例項是根據類建立出來的乙個個具體的「物件」。乙個類可以例項化出多個例項。
__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 三國 西...