標籤:冒號 欄位 包含 doc 計時器 ase 這一 外部 繼承
python物件導向
python設計之初就是一門物件導向的語言
物件導向技術簡介:
類class:描述具有相同的屬性和方法的對象的集合
類變數:類變數在整個執行個體化的對象中是公用的
資料成員:類變數或者執行個體變數,用於處理類及執行個體對象的相關資料
方法重寫:如果從父類繼承的方法不能滿足子類的需求,對其進行改寫,這個過程叫方法的覆蓋
執行個體變數:定義在方法中的變數,只作用於當前執行個體的類
繼承:
執行個體化:建立一個類的執行個體,類的具體對象
方法:類中定義的函數
對象:通過類定義的資料結構執行個體
建立類:
用class語句來建立一個類,class之後為類的名稱並以冒號結尾
class ClassName:
"""類協助資訊"""
Class_suite
類的協助資訊可以通過ClassName.__doc__查看
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class Employee:
‘所有員工的基類‘
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
empCount變數是一個類變數
__init__是一種特殊的方法,類的建構函式或者初始化方法
self代表類的執行個體,self在定義類的時候是必須有的,代表當前對象的地址,self。class則指向類
self不是關鍵字,換成其他的也可以
建立執行個體對象:
執行個體化類在其他程式設計語言中一般使用new關鍵字,在python中類的執行個體化類似函數調用
訪問屬性:
可以使用.來訪問對象的屬性
可以通過一下函數的訪問來訪問屬性:(反射)
getattr(obj, name[,default]):訪問對象的屬性 hasattr(obj, name):檢查是否存在一個屬性 setattr(obj, name):添加屬性 delattr(obj, name):刪除屬性
python內建屬性:
__dict__:類的屬性(包含一個欄位,又類的資料屬性群組成) __doc__:類的文檔字串 __name__:類名 __module__:類定義所在的模組,(類的全名是‘__main__.className‘,如果類位於一個匯入模組mymod中,那麼className.__module__ 等於 mymod) __bases__:類的所有父類組成的元素
python對象銷毀(記憶體回收)
python使用了引用技術這一簡單技術來跟蹤和回收垃圾
在python內部記錄這所有使用中的對象各有多少引用
一個內部跟蹤變數,成為一個引用計數器
當對象被建立時,就建立一個引用計數,當這個對象不再需要,這個對象的引用計數為0時,被回收
回收不是立即的,由計時器在適當的時機,進行對象的記憶體回收
類的繼承:
物件導向的編程最主要好處之一就是代碼的重用,重用方法之一通過繼承機制
class 衍生類別名(基類名)
....
1.如果在子類中需要父類的構造方法就需要顯示的調用父類的構造方法,
2.在調用基類的方法時,需要加上基類的類名首碼,且需要加上self參數變數
3.python總是先尋找對應類型的方法,如果不能在衍生類別中找到,才開始基類中尋找
issubclass():判斷一個類是另一個類的子類或者子孫類, issubclass(sub, sup)
isinstance(obj, Class):如果obj是Class類的執行個體對象或者是一個class子類的執行個體對象,返回True
方法重寫:如果從父類繼承的方法不能滿足子類的需求,對其進行改寫,這個過程叫方法的覆蓋
基礎重載方法:
運算子多載:
類屬性與方法:
類的私人屬性:
__private_attrs:兩個底線開頭,聲明該屬性為私人,不能在類的外部被使用或直接存取。在類內部的方法中使用時 self.__private_attrs。
類的方法:
在類的內部,使用 def 關鍵字可以為類定義一個方法,與一般函數定義不同,類方法必須包含參數 self,且為第一個參數
類的私人方法:
__private_method:兩個底線開頭,聲明該方法為私人方法,不能在類的外部調用。
Python不允許執行個體化的類訪問私人資料,但你可以使用 object._className__attrName( 對象名._類名__私人屬性名稱 )訪問屬性
單底線、雙底線、頭尾雙底線說明:
__foo__: 定義的是特殊方法,一般是系統定義名字 ,類似 __init__() 之類的。 _foo: 以單底線開頭的表示的是 protected 類型的變數,即保護類型只能允許其本身與子類進行訪問,不能用於 from module import * __foo: 雙底線的表示的是私人類型(private)的變數, 只能是允許這個類本身進行訪問了。
python物件導向