Python中建立例項屬性 二

2021-09-25 13:25:07 字數 1643 閱讀 1333

儘管可以通過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)

結果為:

adam

bart

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...