類命名空間與物件的命名空間
類的命名空間
建立乙個類就會建立乙個類的命名空間,用來儲存類中定義的所有名字,這些名字稱為類的屬性
類有兩種屬性:靜態屬性和動態屬性
靜態屬性
直接在類中定義的變數
動態屬性
定義在類中的方法
其中類的資料屬性是共享給所有物件的
>>>id(egg.role)4341594072
>>>id(person.role)
4341594072
而類的動態屬性是繫結到所有物件的
>>>egg.attack__main__.person object at 0x101285860>>
>>>person.attack
建立乙個物件/例項就會建立乙個物件/例項的命名空間,存放物件/例項的名字,稱為物件/例項的屬性
在obj.name會先從obj自己的命名空間裡找name,找不到則去類中找,類也找不到就找父類...最後都找不到就丟擲異常
查詢順序
# 物件.屬性 :
先從物件空間找,如果找不到,再從類空間找,再找不到,再從父類找....
# 類名.屬性 :
先從本類空間找,如果找不到,再從父類找....
# 物件與物件之間是互相獨立的.
1. 計算乙個類 例項化多少物件.
classcount:
count =0
def__init__
(self):
count.count = self.count + 1obj1 =count()
obj2 =count()
(count.count)
2.通過類名可以更改我的類中的靜態變數值
count.count = 6print(count.__dict__)
3.但是通過物件不能改變只能引用類中的靜態變數
obj1.count = 5print(count.__dict__)
物件,類,命名空間,繼承
就是把過程和資料包圍起來,對資料的訪問只能通過已定義的介面 也就會牽涉到下面要談到的介面的概念 比如相思鳥和烏鴉,我們在抽象時,我們忽略它們嘴的不一樣,而我們只在意它們都是有嘴的 mouth 我們忽略它們羽毛顏色的不一樣,而只在意它們的羽毛是有顏色的 color 然後我們抽象出嘴 羽毛顏色等特點。然...
命名空間 物件列舉
在實際專案開發中,往往乙個頁面由多人共同開發,這個時候就存在乙個問題,一旦命名的變數相同,將會導致衝突,如下 張三定義的內容 var num 123 李四定義的內容 var num 我是乙個字串 這個張三在後面呼叫num時就會發生錯誤,為了避免該情況的產生,我們一般使用立即執行函式 閉包的功能進行開...
C 命名空間 預設命名空間與匿名命名空間
2.匿名命名空間 預設命名空間也叫全域性命名空間,所有沒有置於某一具體命名空間下的 即在預設命名空間下,例如func main 函式。include void func void intmain int argc,char ar void func void 需要注意的是 這個就是類似於c語言裡簡單...