1.動(dòng)態(tài)語言的定義
動(dòng)態(tài)編程語言是高級(jí)程序設(shè)計(jì)語言的一個(gè)類別阵赠,在計(jì)算機(jī)科學(xué)領(lǐng)域已被廣泛應(yīng)用涯塔。它是一類在運(yùn)行時(shí)可以改變其結(jié)構(gòu)的語言:例如新的函數(shù)、對(duì)象清蚀、甚至代碼可以被引進(jìn)匕荸,已有的函數(shù)可以被刪除或是其他結(jié)構(gòu)上的變化。動(dòng)態(tài)語言目前非常具有活力枷邪。例如JavaScript便是一個(gè)動(dòng)態(tài)語言榛搔,除此之外如PHP、Ruby东揣、Python等也都屬于動(dòng)態(tài)語言践惑,而C、C++等語言則不屬于動(dòng)態(tài)語言嘶卧。----來自維基百科
1.運(yùn)行的過程中給對(duì)象綁定(添加)屬性
這里我想給要在運(yùn)行過程里給對(duì)象綁定屬性
2.運(yùn)行的過程中給類綁定(添加)屬性
3.運(yùn)行的過程中給類綁定(添加)方法
完整代碼如下:
4.運(yùn)行的過程中刪除屬性穷娱、方法
刪除的方法:
1.del對(duì)象.屬性名
2.delattr(對(duì)象, "屬性名")
通過以上例子可以得出一個(gè)結(jié)論:相對(duì)于動(dòng)態(tài)語言,靜態(tài)語言具有嚴(yán)謹(jǐn)性运沦!所以,玩動(dòng)態(tài)語言的時(shí)候配深,小心動(dòng)態(tài)的坑携添!
那么怎么避免這種情況呢?請(qǐng)使用__slots__篓叶,
5.__slots__
動(dòng)態(tài)語言與靜態(tài)語言的不同
動(dòng)態(tài)語言:可以在運(yùn)行的過程中烈掠,修改代碼
靜態(tài)語言:編譯時(shí)已經(jīng)確定好代碼,運(yùn)行過程中不能修改
如果我們想要限制實(shí)例的屬性怎么辦缸托?比如左敌,只允許對(duì)Person實(shí)例添加name和age屬性。只能限定實(shí)例對(duì)象的添加屬性和方法
為了達(dá)到限制的目的俐镐,Python允許在定義class的時(shí)候矫限,定義一個(gè)特殊的__slots__變量,來限制該class實(shí)例能添加的屬性:
·使用__slots__要注意佩抹,__slots__定義的屬性僅對(duì)當(dāng)前類實(shí)例起作用叼风,對(duì)繼承的子類是不起作用的