類命名空間 物件的命名空間 查詢順序

2022-08-22 10:00:10 字數 1620 閱讀 7320

類命名空間與物件的命名空間

類的命名空間

建立乙個類就會建立乙個類的命名空間,用來儲存類中定義的所有名字,這些名字稱為類的屬性

類有兩種屬性:靜態屬性和動態屬性

靜態屬性

直接在類中定義的變數

動態屬性

定義在類中的方法

其中類的資料屬性是共享給所有物件的

>>>id(egg.role)

4341594072

>>>id(person.role)

4341594072

而類的動態屬性是繫結到所有物件的

>>>egg.attack

__main__.person object at 0x101285860>>

>>>person.attack

建立乙個物件/例項就會建立乙個物件/例項的命名空間,存放物件/例項的名字,稱為物件/例項的屬性

在obj.name會先從obj自己的命名空間裡找name,找不到則去類中找,類也找不到就找父類...最後都找不到就丟擲異常

查詢順序

# 物件.屬性 :

先從物件空間找,如果找不到,再從類空間找,再找不到,再從父類找....

# 類名.屬性 :

先從本類空間找,如果找不到,再從父類找....

# 物件與物件之間是互相獨立的.

1. 計算乙個類 例項化多少物件.

class

count:

count =0

def__init__

(self):

count.count = self.count + 1obj1 =count()

obj2 =count()

print

(count.count)

2.通過類名可以更改我的類中的靜態變數值

count.count = 6

print(count.__dict__)

3.但是通過物件不能改變只能引用類中的靜態變數

obj1.count = 5

print(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語言裡簡單...