python類例項訪問規則

2021-07-04 08:06:46 字數 1256 閱讀 1866

python是一門動態語言,任何實體都可以動態地新增或刪除屬性。乙個類定義了乙個作用域,類例項也引入了乙個作用域,這與相應類定義的作用域不同,在類例項中查詢屬性的時候,首先在例項自己的作用域中查詢,如果沒有找到,則再在類定義的作用域中查詢在對類例項屬性進行賦值的時候,實際上會在類例項定義的作用域中新增乙個屬性(不存在的話),並不會影響到相應類中定義的同名屬性

class a:

cls_i = 0

cls_j = {}

def __init__(self):

self.instance_i = 0

self.instance_j = {}

a = a()

b = a()

print "--------------------1-------------------------"

print a.__dict__

print a.__dict__

print "--------------------2-------------------------"

print a.cls_i

print a.instance_i

print "--------------------3-------------------------"

a.cls_i = 1

print a.__dict__

print a.__dict__

print "--------------------4-------------------------"

a.cls_j['a'] = 'a'

print a.__dict__

print a.__dict__

print "--------------------5-------------------------"

a.cls_k = 0

print b.cls_k

print a.cls_k

第1段**說明例項和類的作用域不同,各自有各自的

第2段**說明例項中沒有的屬性回去類作用域裡面找

第3段**說明例項新增乙個屬性,雖然和類作用域裡的屬性同名,但是他們分別在不同的作用域,是互不影響的

第4端**說明如果是對容器型別屬性的內容進行修改,例項先找到類作用域裡的相應的屬性,再對內容進行修改,這是因為修改的是容器內容而不是容器本身

第5端說明例項的作用域發生變化,並不會影響到該類的其它例項,但是類的作用域發生變化,則會影響到該類的所有例項,包括在這之前建立的例項

python訪問限制及例項方法 類方法

私有屬性是以 雙下劃線 開頭的屬性。在外部訪問私有屬性將會丟擲異常,提示沒有這個屬性。雖然私有屬性無法從外部訪問,但是,從類的內部是可以訪問的。私有屬性是為了保護類或例項屬性不被外部汙染而設計的。更多私有屬性的讀取修改參考新增鏈結描述 lass person object def init self...

Python類訪問限制

如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線 在python中,例項的變數名如果以 開頭,就變成了乙個私有變數 private 只有內部可以訪問,外部不能訪問 class student object def init self,name,score self.name name ...

python 類和例項

物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。仍以student類為例,在python中,定義類是通過class關鍵字 class stude...