後浪小萌新Python 物件屬性的增刪改查

2021-10-08 22:12:02 字數 2165 閱讀 8173

python類物件的屬性是支援增、刪、改、查

查 - 獲取屬性值

物件.屬性 - 獲取物件指定屬性的值

getattr(物件, 屬性名) - 獲取物件指定屬性的值

getattr(物件, 屬性名, 預設值) - 獲取物件指定屬性的值

(如果屬性不存在不會報錯,返回預設值)

增、改物件.屬性 = 值 - 如果屬性存在就是修改物件屬性的值;如果屬性本身不存在就是

新增屬性

setattr(物件, 屬性名, 值) - 如果屬性存在就是修改物件屬性的值;如果屬性本身不

存在就是新增屬性

刪del 物件.屬性 - 刪除物件的指定屬性

delattr(物件, 屬性名) - 刪除物件的指定屬性

注: getattr 、 setattr 、 delattr 可以根據變數的值動態獲取指定屬性的值

舉例:

class

dog:

def__init__

(self, name, breed=

'土狗'

, ***=

'母狗'

, age=1)

: self.breed = breed

self.*** = ***

self.age = age

self.name = name

dog1 = dog(

'大黃'

, ***=

'公狗'

)dog2 = dog(

'寶貝'

,'哈士奇'

, age=3)

# 1).查 - 獲取屬性值

print

(dog1.name)

print

(getattr

(dog1,

'name'))

print

(getattr

(dog1,

'name'

,'無名'))

# print(dog1.color) # attributeerror: 'dog' object has no attribute 'color'

# print(getattr(dog1, 'color')) # attributeerror: 'dog' object has no attribute 'color'

print

(getattr

(dog1,

'color'

,'白色'))

# 白色

# getattr可以根據變數的值動態獲取指定屬性的值

print

(dog1.age)

value =

input

('屬性名:'

)print

(getattr

(dog1, value)

)# 2)增、改

dog1.name =

'小黃'

print

(dog1.name)

# 小黃

dog1.color =

'黃色'

print

(dog1.color)

# 黃色

setattr

(dog1,

'name'

,'黃黃'

)print

(dog1.name)

# 黃黃

setattr

(dog1,

'weight',10

)print

(dog1.weight)

# 10

# 3)刪

del dog1.age

# print(dog1.age) # attributeerror: 'dog' object has no attribute 'age'

delattr

(dog1,

'name'

)# print(dog1.name) # attributeerror: 'dog' object has no attribute 'name'

執行結果:

大黃

大黃大黃白色1

屬性名:name

大黃小黃

黃色黃黃

10

後浪小萌新Python 基礎語法

注釋就是 中說明性的文字,不參與程式的編譯執行 不影響程式的功能 單行注釋 在一行說明性文字前加 這是第一行注釋 這是第二行注釋 這是第三行注釋執行如下 多行注釋 將注釋內容寫在三個單引號或者三個雙引號之間 這是第一行注釋 這是第二行注釋 這是第三行注釋 注 為了防止轉譯,加了縮排,在python中...

後浪小萌新Python 列表基礎

注 列表是容器型資料型別,以 作為容器的標誌,裡面的多個元素用逗號隔開 元素1,元素2,元素3,列表是可變 指的是元素的個數 值和順序可變 列表是有序 列表的元素可以是任何型別資料 同乙個列表可以有多個型別不同的元素 注 容器型資料型別 乙個資料裡面同時儲存多個資料 list2 注 列表可以為空,有...

後浪小萌新Python 多程序

多程序 需要其他程序的時候就建立程序類process的物件 注意 不能直接在乙個程序中修改另外乙個程序的資料 舉例 from multiprocessing import process import time data 10def download url global data data 1pr...