在python物件實際使用過程中,會對其物件的屬性進行增刪改查,那麼這背後是對哪種型別的」資料結構「進行增刪改查呢?
下面以blog類進行說明
class blog(object):
title = 'python物件深度理解'
def __init__(self):
pass
# 進行例項化也即建立乙個python物件
myfirstblog = blog()
# 物件屬性的增
myfirstblog.author='pysenen'
print(myfirstblog.author)
# 列印結果:pysenen
# 物件屬性的查
print(myfirstblog.title)
# 列印結果:python物件深度理解
# 物件屬性的寫(改)
myfirstblog.title='新修改'
print(myfirstblog.title)
# 列印結果:新修改
# 物件屬性的刪
del myfirstblog.author
print(myfirstblog.author)
# 列印結果:'blog' object has no attribute 'author'
以上操作其實就是對 myfirstblog這個物件裡的__dict__資料結構進行操作
列印myfirstblog.__dict__
因此對物件的操作,其實就是對物件的__dict__屬性操作
也即:
# 增
myfirstblog.__dict__['author']='python'
# 查myfirstblog.__dict__['title']
# 改myfirstblog.__dict__['title']='新的title'
# 刪myfirstblog.__dict__.pop('author')
因此容易擴充套件,對物件的操作,可以轉為使用字典的方式進行靈活操作,可回到大家熟悉的python字典資料結構的概念
batch_dict=
myfirstblog.__dict__=batch_dict
print(myfirstblog.__dict__)
del myfirstblog.__dict__
print(myfirstblog.__dict__)
# 列印結果:{}
————分割線————
所有的類都是type元類建立,它建立類的方式 normal_class=type(class_name,class_bases,class_dict),這裡的class_dict就是上面提到普通類的字典
例如上面定義的blog類,用元類方式建立如下:
batch_dict=
blog=type('blog',(object,),batch_dict)
in [1]: batch_dict=
in [2]: blog=type('blog',(object,),batch_dict)
in [3]: blog
out[3]: __main__.blog
in [4]: b=blog()
in [5]: b.name
out[5]: 'foo'
in [6]: b.age
out[6]: '26'
in [7]: b.email
out[7]: '[email protected]'
in [8]: type(b)
out[8]: __main__.blog
本文內容相對容易理解,如果要深入挖掘元類,可以查閱本部落格文章《 python高階——type與元類》 JS物件中屬性的增刪改查
物件屬於一種復合的資料型別,在物件中可以儲存多個不同資料型別的屬性 1.內建物件 在es標準中定義的物件,在任何的es的實現中都可以使用 比如 math string number boolean function object.2.宿主物件 由js的執行環境提供的物件,目前來講主要指由瀏覽器提供的...
class屬性增刪改查
今天發現自己每寫乙個功能就去上網查查,然後繼續寫,平靜下來反思,我才知道是因為自己太懶了,不願意總結,今天特地為此做總結。例子 檢視 var myinput document.getelementbyid myinput 方式1 console.log myinput.classname 方式2 c...
增刪改查及屬性
節點的增刪改查 節點建立 元素節點 document.createelement tag標籤名稱 文字節點 document.createtextnode 文字內容 屬性設定 node.setattribute 名稱,值 節點追加 父節點.insertbefore newnode,oldnode 將...