Python_對象(實例)
阿新 • • 發佈:2018-04-28
python python對象 python實例 1.實例化過程
對象就是類實例化的結果,我們可以模仿函數的調用方式來進行實例化的過程,如下圖所示:
可以發現,函數是函數名(實參1,實參2,...),而實例化是類名(self,參數1,參數2,...),實例化的過程看下圖:
可以發現在實例化的過程中,先是加載了類中的所有代碼塊(先後打印了:下面是開門的方法、下面是關門的方法、這個門打開了),再執行了構造函數。
2.對象屬性相關
2.1 數據屬性
在執行構造函數的過程中自動將數據添加到對應的實例的數據字典中,如下圖所示:
那麽如何進項數據屬性查詢呢?1.我門可以參看使用函數來進行面向對象的設計,可以使用實例名+點(英文.)來直接訪問;2.可以使用實例的屬性字典,按照字典的操作來訪問對應的屬性,如下圖所示:
註意:其實方法一是方法二的一個簡化操作,執行方法一就是在內部執行方法二。
代碼塊如下:
對象就是類實例化的結果,我們可以模仿函數的調用方式來進行實例化的過程,如下圖所示:
可以發現,函數是函數名(實參1,實參2,...),而實例化是類名(self,參數1,參數2,...),實例化的過程看下圖:
可以發現在實例化的過程中,先是加載了類中的所有代碼塊(先後打印了:下面是開門的方法、下面是關門的方法、這個門打開了),再執行了構造函數。
2.對象屬性相關
2.1 數據屬性
在執行構造函數的過程中自動將數據添加到對應的實例的數據字典中,如下圖所示:
那麽如何進項數據屬性查詢呢?1.我門可以參看使用函數來進行面向對象的設計,可以使用實例名+點(英文.)來直接訪問;2.可以使用實例的屬性字典,按照字典的操作來訪問對應的屬性,如下圖所示:
註意:其實方法一是方法二的一個簡化操作,執行方法一就是在內部執行方法二。
代碼塊如下:
class Door(): "門的類" address = "浙江省杭州市" def __init__(self,size,color,type):#構造函數 "初始化門的數據" self.size = size self.color = color self.type = type def open(self): "門打開的方法" print("這個%s門打開了" %self.type) def off(self): "門關閉的方法" print("這個%s門關閉了" %self.type) door1 = Door(16, ‘red‘, ‘木門‘) # 門的實例化1,實例名命名規範首字母小寫 print(door1.__dict__) #對象的屬性字典 #對象的數據屬性訪問 #方法1.使用實例名+點 print(door1.size) #方法2.使用實例字典的性質進行訪問 print(door1.__dict__[‘color‘])
2.2數據屬性的範圍
風濕理論在實例過程的中應用,如下圖所示:
從上圖可以發現,在查找實例的數據屬性的過程是:首先查找實例的屬性字典(也就是類中的init構造函數,將其存進屬性字典中),如果類的屬性字典中沒有,則去構造函數inti的上一層(也就是類下的第一層中查找)也就是類的屬性字典中查找,如果還沒有該屬性,則報錯,不再望類之後查找。這與函數變量作用域的LEGB原則有所區別。
2.3實例的屬性
我們從實例的屬性字典中可以發現,實例的屬性字典中並沒有函數屬性,所以根據風濕理論,此時會去類的屬性字典中查找。如下圖所示:
Python_對象(實例)