python3 面向对象_Python3 面向对象
Python和C++都是一門面向對象的語言,
面向對象技術簡介
類(Class):用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。比如 f = file()##創建了一個類(file())的對象f
類變量:類變量在整個實例的對象中是公用的。類變量定義在類中且在函數體之外。類變量通常不作為實例變量使用。
數據成員:類變量或者實例變量用于處理類及其實例對象的相關的數據。
方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
實例變量:定義在方法中的變量,只作用于當前實例的類。
繼承:即一個派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個派生類的對象作為一個基類對象對待。例如,有這樣一個設計:一個Dog類型的對象派生自Animal類,這是模擬"是一個(is-a)"關系(例圖,Dog是一個Animal)。
實例化:創建一個類的實例,類的具體對象。
方法:類中定義的函數。
對象:通過類定義的數據結構實例。對象包括兩個數據成員(類變量和實例變量)和方法。
定義類
實際上,創建一個類之后,可以通過類名訪問其屬性。
類對象
類對象支持兩種操作:屬性引用和實例化。
屬性引用使用和 Python 中所有的屬性引用一樣的標準語法:f.name。
類對象創建后,類命名空間中所有的命名都是有效屬性名。在類里面定義的屬性叫類屬性,在實例里面定義的屬性叫實例屬性。
實際上我們在定義類的時候會寫一個初始化狀態的方法,會定義一個名為 __init__() 的特殊方法,__init__() 方法可以有參數,參數通過 __init__() 傳遞到類的實例化操作上
然后我們創建一個對象。>>> x = myclass(),輸出結果為:
>>> x.i
12345
下面例子是帶有參數的
self代表類的實例,而非類
類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。
從上面幾張截圖可以看到,self 代表的是類的實例,代表當前對象的地址,也即是self指向了x這個對象,那么下面引用其他屬性都是可以的。
self 不是 python 關鍵字,我們把他換成 其他任何變量名字 也是可以正常執行的
類的屬性
類的方法
在類地內部,使用 def 關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self, 且為第一個參數,self 代表的是類的實例(對象)。
在一個類的方法內部,如果使用__init__(self)定義了屬性,那么在下面的方法里都是可以引用的,與類外單純定義一個函數使用全局變量一個道理。
類的方法可以通過類的名字調用,還可以通過創建的對象去調這個類方法
繼承
支持類的繼承,多個類繼承
方法重寫
如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法
類的私有屬性
__private_attrs:兩個下劃線開頭,聲明該屬性為私有,不能在類地外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs。
類的方法
在類地內部,使用 def 關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self,且為第一個參數,self 代表的是類的實例。
self 的名字并不是規定死的,也可以使用 this,但是最好還是按照約定是用 self。
類的私有方法
__private_method:兩個下劃線開頭,聲明該方法為私有方法,只能在類的內部調用 ,不能在類地外部調用。self.__private_methods。
與類的私有屬性一樣,在實例中def xxx定義方法的時候,__xxx(self),即可。
靜態方法
總結
以上是生活随笔為你收集整理的python3 面向对象_Python3 面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xgboost算法_工业大数据:分析算法
- 下一篇: mysql 游标总条数_mysql 游标