儘管可以通過person類建立出xiaoming、xiaohong等例項,但是這些例項看上除了位址不同外,沒有什麼其他不同。在現實世界中,區分例項xiaoming、xiaohong要依靠他們各自的名字、性別、生日等屬性。
如何讓每個例項擁有各自不同的屬性?由於python是動態語言,對每乙個例項,都可以直接給他們的屬性賦值,例如,給xiaoming這個例項加上name、gender和birth屬性:
xiaoming = person()
xiaoming.name = 'xiao ming'
xiaoming.gender = 'male'
xiaoming.birth = '1990-1-1'
給xiaohong加上的屬性不一定要和xiaoming相同:
xiaohong = person()
xiaohong.name = 'xiao hong'
xiaohong.school = 'no. 1 high school'
xiaohong.grade = 2
例項的屬性可以像普通變數一樣進行操作:
xiaohong.grade = xiaohong.grade + 1
任務: 建立包含兩個 person 類的例項的 list,並給兩個例項的 name 賦值,然後按照 name 進行排序。
方法一:
class person(object):
pass
p1 = person()
p1.name = 'bart'
p2 = person()
p2.name = 'adam'
p3 = person()
p3.name = 'lisa'
l1 = [p1, p2, p3]
l2 =
for i in l1:
l3 = sorted(l2)
print(l3[0])
print(l3[1])
print(l3[2])
結果為:
adam方法二:bart
lisa
import functools
class person(object):
pass
p1 = person()
p1.name = 'bart'
p2 = person()
p2.name = 'adam'
p3 = person()
p3.name = 'lisa'
l1 = [p1, p2, p3]
l2 = sorted(l1, key=functools.cmp_to_key(lambda p1,p2: ord(p1.name[0]) - ord(p2.name[0])))
print(l2[0].name)
print(l2[1].name)
print(l2[2].name)
結果為:
adambart
lisa
python建立例項屬性 Python學習筆記
這是學習廖雪峰老師python教程的學習筆記 1 概覽 1.1 例項繫結屬性 class student object def init self,name self.name name s student bob 建立例項 s s.score 90 為s新增乙個score屬性 1.2 類繫結屬性 ...
python建立例項屬性 建立新的類或例項屬性
問題 你想建立乙個新的擁有一些額外功能的例項屬性型別,比如型別檢查。解決方案 如果你想建立乙個全新的例項屬性,可以通過乙個描述器類的形式來定義它的功能。下面是乙個例子 descriptor attribute for an integer type checked attribute class i...
python中的類屬性和例項屬性
乙個類例項化後,例項是乙個物件,有屬性。同樣,類也是乙個物件,它也有屬性。定義乙個類屬性,如下 class a x 7定義乙個很簡單的類,類中有乙個變數x 7,在類a中,變數x所引用的資料,能夠直接通過類來呼叫。或者說x是類a的屬性,這種屬性稱為類屬性。class a x 7 if name mai...