1.動(dòng)態(tài)語(yǔ)言的定義
動(dòng)態(tài)編程語(yǔ)言是高級(jí)程序設(shè)計(jì)語(yǔ)言的一個(gè)類別,在計(jì)算機(jī)科學(xué)領(lǐng)域已被廣泛應(yīng)用。它是一類在運(yùn)行時(shí)可以改變其結(jié)構(gòu)的語(yǔ)言:例如新的函數(shù)、對(duì)象、甚至代碼可以被引進(jìn),已有的函數(shù)可以被刪除或是其他結(jié)構(gòu)上的變化。動(dòng)態(tài)語(yǔ)言目前非常具有活力。例如JavaScript便是一個(gè)動(dòng)態(tài)語(yǔ)言,除此之外如PHP、Ruby、Python等也都屬于動(dòng)態(tài)語(yǔ)言,而C、C++等語(yǔ)言則不屬于動(dòng)態(tài)語(yǔ)言。----來(lái)自維基百科
1.運(yùn)行的過(guò)程中給對(duì)象綁定(添加)屬性


這里我想給要在運(yùn)行過(guò)程里給對(duì)象綁定屬性


2.運(yùn)行的過(guò)程中給類綁定(添加)屬性


3.運(yùn)行的過(guò)程中給類綁定(添加)方法


完整代碼如下:




4.運(yùn)行的過(guò)程中刪除屬性、方法
刪除的方法:
1.del對(duì)象.屬性名
2.delattr(對(duì)象, "屬性名")
通過(guò)以上例子可以得出一個(gè)結(jié)論:相對(duì)于動(dòng)態(tài)語(yǔ)言,靜態(tài)語(yǔ)言具有嚴(yán)謹(jǐn)性!所以,玩動(dòng)態(tài)語(yǔ)言的時(shí)候,小心動(dòng)態(tài)的坑!
那么怎么避免這種情況呢?請(qǐng)使用__slots__,
5.__slots__
動(dòng)態(tài)語(yǔ)言與靜態(tài)語(yǔ)言的不同
動(dòng)態(tài)語(yǔ)言:可以在運(yùn)行的過(guò)程中,修改代碼
靜態(tài)語(yǔ)言:編譯時(shí)已經(jīng)確定好代碼,運(yùn)行過(guò)程中不能修改
如果我們想要限制實(shí)例的屬性怎么辦?比如,只允許對(duì)Person實(shí)例添加name和age屬性。只能限定實(shí)例對(duì)象的添加屬性和方法
為了達(dá)到限制的目的,Python允許在定義class的時(shí)候,定義一個(gè)特殊的__slots__變量,來(lái)限制該class實(shí)例能添加的屬性:


·使用__slots__要注意,__slots__定義的屬性僅對(duì)當(dāng)前類實(shí)例起作用,對(duì)繼承的子類是不起作用的